1. ホーム
  2. c#

[解決済み】値をNULLにすることはできません。パラメータ名:source

2022-02-12 22:59:41

質問内容

これは、私が長い間、何時間もかけて解いた最大の時間の無駄の問題でしょう。

var db = new hublisherEntities();
establishment_brands est = new establishment_brands();

est.brand_id = 1;
est.establishment_id = 1;
est.price = collection["price"];
est.size = collection["size"];

db.establishment_brands.Add(est);
db.SaveChanges();

というエラーが出ます。

値をnullにすることはできません。パラメータ名:source

のスタックトレース

[ArgumentNullException: Value cannot be null. パラメータ名: source]. System.Linq.Enumerable.Any(IEnumerable) 1 source, Func 2 述語) +4083335 System.Data.Entity.Internal.InternalContext.WrapUpdateException(UpdateException updateException) +87
System.Data.Entity.Internal.InternalContext.SaveChanges() +193
System.Data.Entity.Internal.LazyInternalContext.SaveChanges() +33
System.Data.Entity.DbContext.SaveChanges() +20 ... ...

テーブルにエンティティを追加したいだけなんです。ORMはEFです。

どのように解決するのですか?

私はしばらく前にこの問題に直面しましたが、答えは必ずしもあなたが期待するようなものではありません。このエラーメッセージは、接続文字列が間違っているときによく表示されます。

ざっくりとですが、こんな感じのものが必要でしょう。

<connectionStrings>
    <add name="hublisherEntities" connectionString="Data Source=localhost;Initial Catalog=hublisher;Integrated Security=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
        <parameters>
            <parameter value="Data Source=localhost;Initial Catalog=hublisher;Integrated Security=True" />
        </parameters>
    </defaultConnectionFactory>
</entityFramework>

何が起こっているかというと、間違った場所でデータソースを探しているのです。Entity Frameworkは少し違った方法でそれを指定します。接続文字列とEFの設定を投稿していただければ、確認することができます。