Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#类中实现导航属性_C#_Entity Framework_Navigation Properties - Fatal编程技术网

在c#类中实现导航属性

在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

我有两个实体,每个实体都有一个相关的c#类。我在表a上设置了一个导航属性,以包含对表B中许多项目的引用。当我创建一个新的表a类对象时,我需要能够在表a中创建表B对象的集合。如何在表Ac#类中设置导航属性

数据模型:
在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为什么要将代码优先和模型优先结合起来?如果您希望灵活性,我建议您先使用代码。