C# 使用实体框架的嵌套类
我曾尝试在designer中实现这一点,但我无法理解。是否可以使用实体框架持久化嵌套类 注:我只是好奇这是否可能。在这一点上,我不认为有什么理由这么做,但如果有可能的话,知道怎么做可能是件好事 例如:C# 使用实体框架的嵌套类,c#,.net,entity-framework,nested-class,C#,.net,Entity Framework,Nested Class,我曾尝试在designer中实现这一点,但我无法理解。是否可以使用实体框架持久化嵌套类 注:我只是好奇这是否可能。在这一点上,我不认为有什么理由这么做,但如果有可能的话,知道怎么做可能是件好事 例如: public class NormalClass { public class NestedClass { } } 更新: 丹尼·瓦罗德对如何完成这一任务有一个好主意。当我有空闲时间的时候,我会尝试一下,我会把结果发布在这里,除非其他人先找到它。在.NET中的嵌套类基本上与另一个命名空间
public class NormalClass
{
public class NestedClass { }
}
更新:
丹尼·瓦罗德对如何完成这一任务有一个好主意。当我有空闲时间的时候,我会尝试一下,我会把结果发布在这里,除非其他人先找到它。在.NET中的嵌套类基本上与另一个命名空间级别中的类相同,接受这样一个事实:内部类可以访问外部类的私有部分,正如Ladislav Mrnka所指出的,您可以使用internal而不是private来解决这个问题,与Java不同的是,行为没有变化,因此使用嵌套类没有多大意义 可以使用或使用导航属性定义子对象,但是,复杂属性的功能有限,其中没有导航属性或键,也没有作为嵌套类创建 要强制EF使用嵌套类,您可以尝试自己创建类,然后使用代码优先的方法映射它们,或者取消自动创建类并自己编写它们,或者将.tt文件更改为已创建的嵌套类,然后将.emdx编辑为xml以将实体映射到另一个类。EF类被声明为部分类,因此您可以向它们添加任何需要的内容
请注意,内部类的属性不会持久化到数据库中,如果需要,请使用导航属性。这不是真的。嵌套类比命名空间的另一个级别更重要,因为若在嵌套类的实例中使用父类的实例,则可以访问父实例的私有成员。。。。或者你可以用内部的。谢谢你的更正-很酷。我曾考虑过编辑.edmx,但我还没有先尝试编写代码。您认为哪种方法更容易?我会修改.edmx文件中的类型名称,然后对.tt文件进行黑客攻击,以创建名称空间比loader.GetModelNamespaceinputFile长的类型;作为内部类。