Entity framework EF 4.0动态代理POCO对象与目标类型不匹配
我正在使用EF4.0和POCO。我在将to记录插入数据库时偶然发现了这个错误 对象“BI.Entities.QualityReason”的属性访问器“QualityReasonID”引发了以下异常:“对象与目标类型不匹配。” 将新记录保存到数据库后,数据绑定到GridView时会出现错误。我确定发生了什么,但我不确定为什么会发生,或者我是否错误地使用了EF/POCO。如有任何见解,将不胜感激 发生异常是因为IEnumerable中的对象类型不同。 表中的原始条目类型为System.Data.Entity.DynamicProxies.QualityReason_E483AD567288B459706092F1825F53B1F93C65C5329F8095DD1D848B5D039F04} 而新的是BI.Entities.qualtyreason 下面是我如何插入新对象的Entity framework EF 4.0动态代理POCO对象与目标类型不匹配,entity-framework,entity-framework-4,poco,dynamic-proxy,Entity Framework,Entity Framework 4,Poco,Dynamic Proxy,我正在使用EF4.0和POCO。我在将to记录插入数据库时偶然发现了这个错误 对象“BI.Entities.QualityReason”的属性访问器“QualityReasonID”引发了以下异常:“对象与目标类型不匹配。” 将新记录保存到数据库后,数据绑定到GridView时会出现错误。我确定发生了什么,但我不确定为什么会发生,或者我是否错误地使用了EF/POCO。如有任何见解,将不胜感激 发生异常是因为IEnumerable中的对象类型不同。 表中的原始条目类型为System.Data.En
public void createQualityReason(QualityReason qReasons)
{
dbcontext.QualityReasons.AddObject(qReasons);
dbcontext.SaveChanges();
}
我通过从以下位置更改获取代码来解决此错误:
public IEnumerable<QualityReason> fetchQualityReasons()
{
IEnumerable<QualityReason> queryReasons = dbcontext.QualityReasons.AsEnumerable();
return queryReasons;
}
public IEnumerable fetchQualityReasons()
{
IEnumerable queryReasons=dbcontext.QualityReasons.AsEnumerable();
返回查询原因;
}
到
public IEnumerable fetchQualityReasons()
{
IEnumerable queryReasons=来自dbcontext.QualityReasons.AsEnumerable()中的数据
选择新的质量原因
{
QualityReasonID=data.QualityReasonID,
QualityReasonName=data.QualityReasonName
};
返回查询原因;
}
因此,为了避免这个错误,我每次都必须显式地选择POCO类。这感觉我好像出了什么问题。有什么想法吗?我不知道问题是否已经解决,但我的(POCO)“场景”课程也遇到了同样的问题
使用
context.CreateObject
创建(POCO)对象i.s.o.a.…=new Scenario()。导致此错误的原因是GridView在使用boundfields时不处理多态数据源。所以你有两个选择
So instead of using something like ti
gvGroups.DataSource = ProductHelper.Get()
gvGroups.DataBind();
var query = from p in ProductHelper.Get()
select new {p.ProductId, p.ProductName, p.ProductDesc, p.ProductLink};
gvGroups.DataSource = query;
gvGroups.DataBind();
今天面临着同样的问题,并且曾经解决过。简单到:
var dynamicProxyMember = _repository.FindOne<Member>(m=>m.Id = 1);
var member = new Member().InjectFrom(dynamicProxyMember) as Member;
var dynamicproxy成员=_repository.FindOne(m=>m.Id=1);
var member=new member().InjectFrom(dynamicProxyMember)作为成员;
就是这样:)我认为问题可能更多地与gridview和数据绑定有关,而不是与EF有关。
var dynamicProxyMember = _repository.FindOne<Member>(m=>m.Id = 1);
var member = new Member().InjectFrom(dynamicProxyMember) as Member;