Entity framework 实体框架异常“发现不明确匹配。”
有没有办法在EntityFramework5.0中使用属性隐藏? 使用新类型隐藏基础属性的位置。 在本例中,对象Id替换为新的int IdEntity framework 实体框架异常“发现不明确匹配。”,entity-framework,Entity Framework,有没有办法在EntityFramework5.0中使用属性隐藏? 使用新类型隐藏基础属性的位置。 在本例中,对象Id替换为新的int Id public abstract class BaseObject : IFBaseObject { [NotMapped] protected virtual object Id { get; set; } public virtual byte[] RowVersion { get; set; } public abstract
public abstract class BaseObject : IFBaseObject {
[NotMapped]
protected virtual object Id { get; set; }
public virtual byte[] RowVersion { get; set; }
public abstract class BaseObjectInt : BaseObject, IFKeyInt {
[Required]
[Key]
public new virtual int Id { set; get; }
public class MessageRef : BaseObjectInt{
public virtual string Category { get; set; }
public virtual string message { get; set; }
}
实体框架模型似乎可以工作。
数据库按预期创建。
但是,EF在添加值时引发反射异常。
**找到不明确的匹配项**
Context.Set<TPoco>().AddOrUpdate(poco);
然后EF可以工作,但我发现泛型会出现其他非EF问题,因为基类型没有Id
如果感兴趣的话,请留下痕迹
在System.RuntimeType.GetPropertyImplString名称、BindingFlags bindingAttr、Binder Binder、类型returnType、类型[]类型、参数修改器[]修饰符处
在System.Type.GetPropertyString名称处,BindingFlags bindingAttr
在System.Linq.Enumerable.c__DisplayClass123.b__11t源x
在System.Linq.Enumerable.where选择Enumerableiterator2.MoveNext
在System.Linq.Enumerable.Aggregate[TSource,TAccumulate]IEnumerable1 source,TAccumulate seed,Func3 func
在System.Data.Entity.Migrations.IDbSetExtensions.AddOrUpdate[TEntity]DbSet1集合中,IEnumerable1 IdentificationProperties,TEntity[]entities
在System.Data.Entity.Migrations.IDbSetExtensions.AddOrUpdate[tenty]IDbSet`1 set,tenty[]entities中,您不希望将属性隐藏在应用程序的核心。通常你会用泛型来解决这个问题,但我不确定EF是否会更喜欢它。能够对Id值进行通用访问有什么急迫之处?嗨,Gert,我不喜欢使用动态代码访问存储库。我被迫使用动态存储库或动态lambda。动态lambda也不是我最喜欢的方法,因为它构造起来非常麻烦。我已经删除了base属性,但希望使用已知的模式和intellisence支持。现在,我将返回动态调用的泛型存储库。:-令人沮丧的是,我们的POCO的变体模式在EF之外工作得很好。遗憾的是,我们不能向EF类型信息表明,因此没有必要进行反射。顺便说一句,Gert,您的评论可能需要升级才能回答Soonfii,我使用字段而不是属性来回避这个问题。并将ID添加到基本对象。
// protected virtual object Id { get; set; }