如何使用EF配置域类以使用ObservableCollection?

时间:2016-07-27 06:06:30

标签: entity-framework entity-framework-4 ef-code-first entity-framework-5 ef-fluent-api

我已经开始使用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
}

1 个答案:

答案 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类的约束中,您必须在端点中创建所有数据以执行您想要的操作