【问题标题】:Dynamic Custom Attributes with Entity Framework具有实体框架的动态自定义属性
【发布时间】:2011-07-10 01:43:54
【问题描述】:

好的,

这可能并不简单,但我想我会把它扔在那里:

我想到在 EF 中使用部分类扩展 Model-First 实体以添加数据注释元素,如下所示:

[Required]
string MyString {get;set;}

但是,如果我在一个多租户系统中,我可能想要自定义传递给最终客户端时实际需要哪些字段,我可以根据客户端配置设置的方式动态设置注释,比如在另一个比如表?

更新:在多租户系统中至少有两个数据库。存储系统配置信息的一种。此外,每个客户都有自己的个人数据库。系统数据库控制路由并从那里选择适当的客户数据库。

任何人对如何实现这一点的任何见解或想法都会很棒!

谢谢, 布伦特

【问题讨论】:

    标签: c# .net entity-framework entity-framework-4


    【解决方案1】:

    如果您使用的是 EF 4.1,您可以创建不同的 DbContext,引用相同的实体,但使用 Fluent Api 提供不同的映射。

    这里是一个描述使用 api 的视频的链接。 Fluent Api

    注意:需要设置您的数据库以适应所有不同的配置。例如,如果在一种情况下需要“FirstName”,而在另一种情况下不需要,则您的数据库应允许 NULL 以应对这两种情况。

    【讨论】:

    • 我认为您可能已经为我指明了正确的方向。找到我正在查看的两个链接:nikhilk.net/RIA-Services-Fluent-Metadata-API.aspxfluentmetadata.codeplex.com。深入研究后,我会发布更多内容。
    • 这让我找到了正确的方向。我联系了 Julie Lerman 和 Nikhil Kothari,他们将其中一个例子放在了一起。 MSFT 从未最终使用过它,除非我自己构建一些东西,否则我对使用这样的东西的追求似乎很成功。
    【解决方案2】:

    您不能动态更改属性。

    一种选择是动态创建类型,可能继承您实际使用的某个类(或实现接口)。虽然我不确定这是否适用于 EF。

    另一种可能性是,如果 EF 有另一种方式,你可以告诉它同样的事情,但我对 EF 了解不多,所以我无法判断是否存在类似的事情。

    【讨论】:

      猜你喜欢
      • 2010-10-01
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      相关资源
      最近更新 更多