TL; DR
我希望使用不同的方式将使用Entity Framework的多个合成映射到同一个类,而该组件具有指向作曲家的单个外键,或在两者之间有一个表。
正确的解释
我正在使用Enterprise Architect设计一些代码。感兴趣的类的UML如下所示:
在C#中生成的代码是
public class A
{
public int id { get; set; }
public List<B> foo { get; set; }
public List<B> bar { get; set; }
}
public class B
{
public int id { get; set; }
// fields...
}
太好了!那就是我想要的。但是,我的Entity Framework代码优先方法(无法更改,已经在项目中使用了多年)创建的迁移与我希望的完全不一样。
A是仅包含其字段的表(在示例中,为id)。 B如下:
| id | field1 | field2 | A_ID1 | A_ID2 |
嗯,它可以工作,但是问题是,在实际情况下,我对多个类有十种构图。 B的相同实例将不会在多个类之间永远共享。结果是这样的表
| id | field1 | field2 | A_ID1 | A_ID2 |
| 1 | .. | .. | 1 | null |
| 2 | .. | .. | 2 | null |
| 2 | .. | .. | null | 3 |
即每行只有一个外键(我重复一遍,因为这是我最困扰的问题,有很多外键)不为空,其他所有为空。
您对改进此映射有任何建议吗?我正在使用的工具是
Enterprise Architect <->实体框架<-> EF代码优先迁移