Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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#_.net_Entity Framework_Nested Class - Fatal编程技术网

C# 使用实体框架的嵌套类

C# 使用实体框架的嵌套类,c#,.net,entity-framework,nested-class,C#,.net,Entity Framework,Nested Class,我曾尝试在designer中实现这一点,但我无法理解。是否可以使用实体框架持久化嵌套类 注:我只是好奇这是否可能。在这一点上,我不认为有什么理由这么做,但如果有可能的话,知道怎么做可能是件好事 例如: public class NormalClass { public class NestedClass { } } 更新: 丹尼·瓦罗德对如何完成这一任务有一个好主意。当我有空闲时间的时候,我会尝试一下,我会把结果发布在这里,除非其他人先找到它。在.NET中的嵌套类基本上与另一个命名空间

我曾尝试在designer中实现这一点,但我无法理解。是否可以使用实体框架持久化嵌套类

注:我只是好奇这是否可能。在这一点上,我不认为有什么理由这么做,但如果有可能的话,知道怎么做可能是件好事

例如:

public class NormalClass
{
    public class NestedClass { }
}
更新:


丹尼·瓦罗德对如何完成这一任务有一个好主意。当我有空闲时间的时候,我会尝试一下,我会把结果发布在这里,除非其他人先找到它。

在.NET中的嵌套类基本上与另一个命名空间级别中的类相同,接受这样一个事实:内部类可以访问外部类的私有部分,正如Ladislav Mrnka所指出的,您可以使用internal而不是private来解决这个问题,与Java不同的是,行为没有变化,因此使用嵌套类没有多大意义

可以使用或使用导航属性定义子对象,但是,复杂属性的功能有限,其中没有导航属性或键,也没有作为嵌套类创建

要强制EF使用嵌套类,您可以尝试自己创建类,然后使用代码优先的方法映射它们,或者取消自动创建类并自己编写它们,或者将.tt文件更改为已创建的嵌套类,然后将.emdx编辑为xml以将实体映射到另一个类。

EF类被声明为部分类,因此您可以向它们添加任何需要的内容


请注意,内部类的属性不会持久化到数据库中,如果需要,请使用导航属性。

这不是真的。嵌套类比命名空间的另一个级别更重要,因为若在嵌套类的实例中使用父类的实例,则可以访问父实例的私有成员。。。。或者你可以用内部的。谢谢你的更正-很酷。我曾考虑过编辑.edmx,但我还没有先尝试编写代码。您认为哪种方法更容易?我会修改.edmx文件中的类型名称,然后对.tt文件进行黑客攻击,以创建名称空间比loader.GetModelNamespaceinputFile长的类型;作为内部类。