在c#类中实现导航属性
我有两个实体,每个实体都有一个相关的c#类。我在表a上设置了一个导航属性,以包含对表B中许多项目的引用。当我创建一个新的表a类对象时,我需要能够在表a中创建表B对象的集合。如何在表Ac#类中设置导航属性 数据模型:在c#类中实现导航属性,c#,entity-framework,navigation-properties,C#,Entity Framework,Navigation Properties,我有两个实体,每个实体都有一个相关的c#类。我在表a上设置了一个导航属性,以包含对表B中许多项目的引用。当我创建一个新的表a类对象时,我需要能够在表a中创建表B对象的集合。如何在表Ac#类中设置导航属性 数据模型: 在EF中导航属性很简单。下面的示例显示了导航属性的外观: public class Foo { public int FooId { get; set; } public string SomeProperty { get; set; } public vi
在EF中导航属性很简单。下面的示例显示了导航属性的外观:
public class Foo
{
public int FooId { get; set; }
public string SomeProperty { get; set; }
public virtual IEnumerable<Bar> Bars { get; set; }
}
然后在业务对象中实现其他逻辑。实体应该是轻量级的,最多应该有数据属性。不过,我更喜欢通过OnModelCreating使用fluent映射
以下是一些很好的参考资料:在EF中导航属性很简单。下面的示例显示了导航属性的外观:
public class Foo
{
public int FooId { get; set; }
public string SomeProperty { get; set; }
public virtual IEnumerable<Bar> Bars { get; set; }
}
然后在业务对象中实现其他逻辑。实体应该是轻量级的,最多应该有数据属性。不过,我更喜欢通过OnModelCreating使用fluent映射
以下是一些很好的参考资料:您使用的是哪种版本的EF?您是否先使用代码?你有模型/图表吗?EF4.0。是的,首先使用代码,我使用数据模型的edmx文件。如果您使用的是edmx,则不首先使用代码。代码优先只是用属性修饰的POCO类。如果您使用EDMX并将表导入模型导航属性,则应自动创建(您的数据库必须正确配置引用完整性-外键)。您使用的是哪个版本的EF?您是否先使用代码?你有模型/图表吗?EF4.0。是的,首先使用代码,我使用数据模型的edmx文件。如果您使用的是edmx,则不首先使用代码。代码优先只是用属性修饰的POCO类。如果您使用EDMX并将表导入模型,则应自动创建导航属性(您的数据库必须正确配置了引用完整性-外键)。我得到一个“类型'MyNamespace.Bar'上不存在所需的属性'Foo'。在Bar类中,我在edmx文件的实体模型上有一个属性
public virtual Foo Foo{get;set;}
,Bar实体上有一个导航属性,表示它是Foo的一个实例。你知道这个错误可能是什么吗?如果OP使用EDMX,这会有什么帮助?@LadislavMrnka我假设他是先使用代码的,因为EDMX负责导航属性。c#类是先编写的。然后在edmx文件中创建实体。我已经关闭了自动代码生成,因为我需要扩展基类。@MBU为什么要先将代码和模型结合起来?如果您想获得灵活性,我建议您先编写代码。我得到一个“类型“MyNamespace.Bar”上不存在必需的属性“Foo”。在Bar类中,我有一个属性public virtual Foo Foo{get;set;}
在edmx文件中的实体模型上,Bar实体上有一个导航属性,表示它是Foo的实例。你知道这可能是什么错误吗?如果OP使用edmx,这会有什么帮助?@LadislavMrnka我假设他首先使用代码,因为edmx负责导航属性。首先编写c类。然后我创建edmx文件中的实体。我已关闭自动代码生成,因为我需要扩展基类。@MBU为什么要将代码优先和模型优先结合起来?如果您希望灵活性,我建议您先使用代码。