【发布时间】:2017-06-05 05:15:09
【问题描述】:
我有一个 C# 项目,我使用实体框架作为 ORM。我有一个User,可以支付给许多银行。每家银行都是一个独立的实体,它们中的每一个都由不同的字段进行描述。
问题是 - 一个User 可以没有或有多个不同的Banks。我不太确定如何对此建模 - 临时解决方案是添加一个额外的 UserBank 实体,它与 User 处于 1:1 的关系中。这些类看起来(或多或少)是这样的:
public class User
{
public virtual UserBank Banks { get; set; }
// (...)
}
和
public class UserBank
{
public virtual User { get; set; }
public virtual Bank1 { get; set; }
public virtual Bank2 { get; set; }
public virtual Bank3 { get; set; }
}
在这种情况下,User 可能有也可能没有任何Banks 中的帐户。如果他没有,则值为NULL。
它并不完美——但至少User 不需要知道任何关于Bank 类型的信息。问题是,如果我想添加一个新的Bank,我需要修改UserBank 实体,这违反了SOLID 中的O,我试图始终遵循。
此外,如果User 没有任何银行账户,我不喜欢UserBank 必须为N 个银行存储N 个空(NULL)列。是否有适当的模式来处理这种情况?
编辑
我知道在原始 SQL 中这是一个相对简单的问题。这里的问题是如何使用代码优先的实体框架来做到这一点。
【问题讨论】:
-
当您有感觉时,您应该有索引列(Bank1、Bank2、Bank3 ...),这是需要相关边桌的明亮指示 ...
-
@Shnugo 你能详细说明一下吗?主要问题是如何在代码优先的实体框架中处理它 - 我知道它在原始 SQL 中看起来很容易,但我不知道如何用 EF 编写它
标签: c# sql entity-framework ef-code-first