我已经开始使用Entity Framework Code First建模技术,并且已经看到许多使用 DataAnnotation 和 FluentAPI 实现一对多(1-N)关系的示例,但所有示例在建模域类时使用ICollection
。我已经在我的域类中使用了泛型ObservableCollection
,并且不打算更改它。
目前,在使用FluentAPI指定配置时,我收到以下错误:
HasRequired(t => t.App)
.WithMany(t => t.EndPoints) // error here
.HasForeignKey(t => t.App);
无法隐式转换Type' EndPoints'到' ICollection'。
注意:EndPoints类是使用ObservableCollection实现的。
我的问题是如何让它发挥作用?
以下是我的实体定义:
public class ModelBase
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public class RuleApp : ModelBase
{
public EndPoints EndPoints { get; set; }
}
public class EndPoint : ModelBase
{
public RuleApp RuleApp { get; set; }
}
public class EndPoints : GenericObservableCollection<EndPoint> { }
public class GenericObservableCollection<T> : ObservableCollection<T>
{
// other common stuff handling
}
答案 0 :(得分:0)
这是一个例子:
public class ModelBase
{
public Guid Id { get; set; }
public string Name { get; set; }
}
public class RuleApp : ModelBase
{
//This for create RelationShip
public virtual ICollection<EndPoint> EndPoints { get; set; }
[NotMapped]
Public EndPoints GenericEndPoints { get; set; }
public void TransferToGenric()
{
GenericEndPoints =new EndPoints(EndPoints)
}
}
public class EndPoint : ModelBase
{
public RuleApp RuleApp { get; set; }
}
public class EndPoints : GenericObservableCollection<EndPoint> { }
public class GenericObservableCollection<T> : ObservableCollection<T>
{
// other common stuff handling
}
如果你使用GenericObservableCollection作为你的calss中的属性EF Mapped all属性,那么我只创建一个属性来使用endpoint,之后我将它转换为GenericObserveableCollection。 在EndPoins类的约束中,您必须在端点中创建所有数据以执行您想要的操作