Lux*_*ing 7 c# entity-framework
我即将创建一个以UUID作为其唯一密钥(不是主键)的应用程序表单.
我收到了错误:
EntityFramework.SqlServer.dll中出现"System.Data.Entity.Core.EntityCommandExecutionException"类型的异常但未在用户代码中处理附加信息:执行命令定义时发生错误.有关详细信息,请参阅内部异常
连接字符串到DB:
connectionString="Data Source=(localdb)\v11.0;
Initial Catalog=FormsContext;
Integrated Security=True;
MultipleActiveResultSets=True;
AttachDbFilename=|DataDirectory|Forms.mdf"
providerName="System.Data.SqlClient"
Run Code Online (Sandbox Code Playgroud)
FormsContext.cs:
namespace ApplicationForm.Models
{
public class FormsContext : DbContext
{
public FormsContext() : base("name=FormsContext")
{
}
public System.Data.Entity.DbSet<ApplicationForm.Models.Form> Forms { get; set; }
...
Run Code Online (Sandbox Code Playgroud)
数据库是这样的:
FormsContext->Forms->{id,uuid,first,last...}
Run Code Online (Sandbox Code Playgroud)
我不太确定这次发生了什么.有人帮我解决这个问题吗?
编辑/分辨率
我不确定如何检查内部异常,我对此做了一些研究.因此,当我在内部异常中阅读错误消息时,我可以解决我的问题.
我发现了这个bug是什么.查询字段是'firstname'但我的表列名是'first'.他们没有匹配.一旦我更改了DB列名称,它就再次运行了.
Ωme*_*Man 13
发现了什么错误.查询字段是'firstname'但我的表列名是'first'.他们没有匹配.一旦我更改了DB列名称,它就再次运行了.
如果数据库始终处于不稳定状态,必须努力使每个人保持同步.
EF只是一组映射,一个及时的快照,以及这些映射是对表还是存储过程,都没关系.
对于列名称或外键约束的任何细微更改都可能对任何旧映射产生连锁反应,并且需要将其重新映射/搭建到新结构中; 否则因此来自旧映射的奇怪行为.
有时,这些影响可能会产生明显的错误,如您发现的甚至更隐蔽的非明显的逻辑错误,这些错误可以为工作(编译)软件提供细微的逻辑错误.我已经看到了经验中的逻辑错误,它们确实发生了.
所以要始终保持警惕,以保持EF映射同步.
我回答了一个不同的EF问题,但也是如此.
我遇到了这样一种情况:在EF中,运行时映射的存储过程失败,因为存储过程中的内部更改发现sql cast
已从结果中删除了列名,而EF(在更改之前映射)失败.我的答案中有一个屏幕截图,显示EF/db更改会产生有害影响:
数据阅读器不兼容.成员在数据读取器中没有具有相同名称的相应列
归档时间: |
|
查看次数: |
81620 次 |
最近记录: |