值不能为空。 参数名称:来源

这可能是我花了好几个小时解决了很长时间的最大浪费。

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(); 

这给了我一个错误

值不能为空。 参数名称:来源

堆栈跟踪

[ArgumentNullException:值不能为空。 参数名称: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。

我有一段时间回来,答案不一定是你所期望的。 当你的连接string错误时,这个错误信息经常会出现。

猜测,你需要这样的东西:

 <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指定它稍有不同。 如果您发布连接string和EFconfiguration,然后我们可以检查。

DbContext中的某个值是一个IEnumerable值,用Any() (或Where()Select()或任何其他LINQ方法)查询,但是这个值为null

找出是否将查询放在一起(在您的示例代码之外的地方),在哪里使用LINQ方法,或者您使用IEnumerable作为NULL参数。

我的理由和其他地方不一样,所以我想我会把它发布给任何可能有这个问题的人。

我正在调用Count的一个实例的DbSet与filter空ie

 dbSet.Count(null); 

我发现在这里传递null是导致错误,所以我现在调用如果filter为null的无参数方法:

  if (filter == null) { return dbSet.Count(); } else { return dbSet.Count(filter); } 

这为我sorting的问题。 这也可能是DbSet上其他任何方法的问题。

就像一个供参考,有人可能会觉得它有用。 我正在追逐我的尾巴,这个错误差不多2天了,总是在想些什么,并且寻找可能是这个问题的类,最后我发现它非常愚蠢的问题,这是我在mypage.ascx中的标记(HTML)代码。 问题是我有一个<asp:EntityDataSource> ,这有一个包含属性,我有一些其他表在这里列出,并错误地是一个表是最近从数据库中删除,我从来没有注意到,它与其他返回null实体。 我刚刚从包含列表中删除了愚蠢的表,我很好去。 希望这可以帮助别人。

解决以下解决scheme

1)右键单击edmx文件,select打开方式,XML编辑器

2)在edmx:StorageModels元素中find实体

3)完全删除DefiningQuery

4)重命名商店:Schema =“dbo”到Schema =“dbo”(如果存在)

5)删除商店:名称属性

这可能是一样愚蠢的,在我的情况下,savechanges错误bcoz数据库没有外键和关联被添加到EDM表。 我在db和重新生成的EDM中添加了外键以进行修复。

我看到的错误如下:情况1 – >当使用DBContext EDM消息=值不能为空。 参数名称:Source at System.Linq.Enumerable.Any [TSource](IEnumerable 1 source, Func 2谓词)

情况2 – >使用ObjectContext进行EDM时Message =无法更新EntitySet'Contact',因为它有一个DefiningQuery,并且元素中不存在元素以支持当前操作。

(只是想扔在那里,以防万一有人帮助)。

在MVC中,View屏幕是调用Controller或Repository.cs中的方法,并将返回值赋给CSHTML中的任何控件,但是这个方法实际上没有在.cs / controller中实现,那么CSHTML会抛出NULL参数exception

当我有一个无效的types的实体属性时,我得到了这个错误。

 public Type ObjectType {get;set;} 

当我删除属性错误停止发生。

在我的情况下,在IIS上configurationWeb应用程序时popup问题,当任何logging上的更新命令被触发时,就会产生这个错误。

App_Data上的权限问题设置为只读。 右键单击该文件夹,取消选中只读checkbox,即可完成。 顺便说一下,为了testing目的,我使用了App_Data文件夹中的localdb数据库。