【问题标题】:Using Table per Hierarchy can you set the discriminator for the base class?使用 Table per Hierarchy 可以为基类设置鉴别器吗?
【发布时间】:2012-04-27 00:16:28
【问题描述】:

我正在使用 EF 4.3 和 TPH。

我的基类是User,我还有一个类Customer,它派生自User,还有一些额外的字段。

在我的数据库中,我有一个名为UserType 的列,我将其用作鉴别器。我希望客户 = 'C' 和用户 = 'U'

我希望应用程序的“常规”用户为User 类型,客户为Customer 类型。他们都以相同的方式登录,除了几个字段之外,他们的主要区别是权限,所以我用这种方式建模很方便。

通过像这样设置我的上下文,我可以让 Customer 正常工作:

mb.Entity<User>().Map<Customer>(m=>m.Requires("UserType").HasValue("C"));

我的问题是,如果我想创建一个常规的User 实体,我如何告诉 EF 使用“U”作为鉴别符。

我试图避免从 User 派生另一个类,因为 User 已经满足我的需求。但也许这是不可能的。

【问题讨论】:

    标签: entity-framework entity-framework-4 entity-framework-4.1


    【解决方案1】:

    您可以为您的基本类型设置鉴别器值:

    mb.Entity<User>().Map(m => m.Requires("UserType").HasValue("U"));
    

    【讨论】:

    • 当我尝试得到的错误是“Map 被多次调用,类型为 'User',并且至少有一个调用没有指定目标表名。”
    猜你喜欢
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 2020-07-19
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多