C# 关联父数据模型对象和子数据模型对象的最佳方式是什么?
我下面的代码在建立父子关系时看起来非常复杂 问题:关联父数据模型对象和子数据模型对象的最佳方式是什么C# 关联父数据模型对象和子数据模型对象的最佳方式是什么?,c#,entity-framework,datamodel,C#,Entity Framework,Datamodel,我下面的代码在建立父子关系时看起来非常复杂 问题:关联父数据模型对象和子数据模型对象的最佳方式是什么 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Linq.Expressions; using ConsoleApplication1; class Child { public string Name { get; set; }
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using ConsoleApplication1;
class Child
{
public string Name { get; set; }
public Parent Parent { get; set; }
}
class Parent
{
public string Name { get; set; }
public IEnumerable<Child> Children { get; set; }
}
class Program
{
static void Main(string[] args)
{
Parent p1 = new Parent { Name = "P1" };
Child c1 = new Child { Name = "C1" };
c1.Parent = p1;
Child c2 = new Child { Name = "C2" };
c2.Parent = p1;
List<Child> children = new List<Child>();
children.Add(c1);
children.Add(c2);
p1.Children = children;
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Linq.Expressions;
使用ConsoleApplication1;
班童
{
公共字符串名称{get;set;}
公共父级{get;set;}
}
班级家长
{
公共字符串名称{get;set;}
公共IEnumerable子项{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
父项p1=新父项{Name=“p1”};
子项c1=新子项{Name=“c1”};
c1.父代=p1;
子c2=新子{Name=“c2”};
c2.父母=p1;
列表子项=新列表();
添加(c1);
增加(c2);
p1.儿童=儿童;
}
}
这个问题可能会有帮助:
也许您应该在类中实现一些helper方法,这些方法封装了一些基本思想:
public class Parent {
....
public void AddChild(Child child) {
child.Parent = this;
this.Children.Add(child);
}
public void RemoveChild(Child child) {
child.Parent = null;
this.Children.Remove(child);
}
}
public class Child {
private Child() {}
public static Child CreateChild(Parent parent) {
var child = new Child();
parent.AddChild(child);
return child;
}
}
我将从子构造函数中删除chid.Parent=Parent,Parent.AddChild已经这样做了。你只是在重复你自己。可能会将孩子的构造函数设为私有,添加一个creater方法,该方法将父对象作为输入和其他属性,创建孩子并使用父对象的AddChild方法(简而言之,将其设为单例)
class Parent
{
...
public Child AddChild(string name)
{
return this.AddChild(new Child(name));
}
public Child AddChild(Child c)
{
c.Parent = this;
this.children.Add(c);
return c;
}
}