dan*_*ich 113 c# asp.net-mvc entity-framework
这可能是我花了好几个小时解决很长时间的最大浪费时间问题.
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();
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误
值不能为空.参数名称:source
堆栈跟踪
[ArgumentNullException:Value不能为null.参数名称:source] System.Linq.Enumerable.Any(IEnumerable
1 source, Func2 predicate)+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.
Mar*_*der 164
DbContext中的某个位置是一个值,IEnumerable并且是Any()(Where()或Select()或任何其他LINQ方法)查询的值,但此值为null.
找出是否将查询放在一起(在示例代码之外的某个地方)使用LINQ方法,或者将其IEnumerable用作NULL参数.
ana*_*der 38
我有一段时间回来了,答案不一定是你所期待的.当您的连接字符串错误时,通常会出现此错误消息.
猜测一下,你需要这样的东西:
<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>
Run Code Online (Sandbox Code Playgroud)
发生的事情是它正在寻找错误位置的数据源; 实体框架指定它略有不同.如果您发布连接字符串和EF配置,那么我们可以检查.
Sum*_*one 14
我只是在.net 2.2核心的实体框架得到这个确切的错误,因为我没有足够的set;在我DbContext像这样:
public DbSet<Account> Account { get; }
Run Code Online (Sandbox Code Playgroud)
变成:
public DbSet<Account> Account { get; set;}
Run Code Online (Sandbox Code Playgroud)
但是,直到我尝试使用 linq 查询Where()和Select()上面提到的其他人时,它才显示异常。
我试图将其设置DbSet为只读。我会继续努力...
Guy*_*owe 11
我的理由与其他人不同,所以我想我会把它发布给其他可能有这个问题的人.
我在一个带有null过滤器的DbSet实例上调用Count,即
dbSet.Count(null);
Run Code Online (Sandbox Code Playgroud)
我发现在这里传递null导致错误,所以我现在调用无参数方法,如果过滤器为null:
if (filter == null)
{
return dbSet.Count();
}
else
{
return dbSet.Count(filter);
}
Run Code Online (Sandbox Code Playgroud)
这为我排序了问题.对于DbSet上的任何其他方法,这可能是一个问题.
使用.Count()而不检查null是导致此错误的一个重要原因。
修复:
if(someList != null & someList.Count()>0)
{
//Now, put your hackable code here!
}
Run Code Online (Sandbox Code Playgroud)
仅供参考,有人可能会发现它很有用。我几乎 2 天都在为这个错误追我的尾巴,并且一直在思考一些大问题并寻找可能是问题的类,最后我发现这是一个非常愚蠢的问题,它在 mypage.ascx 中的标记 (HTML) 代码中. 问题是我有一个<asp:EntityDataSource>,它有一个包含属性,我在这里列出了一些其他表,错误地有一个最近从数据库中删除的表,我从来没有注意到它与其他实体一起返回空值。我刚刚从包含列表中删除了愚蠢的表格,我很高兴。希望这可以帮助某人。
| 归档时间: |
|
| 查看次数: |
240703 次 |
| 最近记录: |