值不能为空。 参数名称:来源
这可能是我花了好几个小时解决了很长时间的最大浪费。
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数据库。