C# 具有实体框架的动态自定义属性

C# 具有实体框架的动态自定义属性,c#,.net,entity-framework,entity-framework-4,C#,.net,Entity Framework,Entity Framework 4,嗯 这可能并不简单,但我想我会把它扔出去: 我想到用一个分部类扩展EF中的模型第一实体,以添加如下数据注释元素: [Required] string MyString {get;set;} 但是,如果我在一个多租户系统中,我可能希望自定义在传递给最终客户机时实际需要哪些字段,那么我可以根据客户机配置设置的方式(例如在另一个表中)动态设置注释吗 更新:在多租户系统中,至少有两个数据库。存储系统配置信息的设备。此外,每个客户都有自己的数据库。系统数据库控制路由和从中选择适当的客户数据库 任何人对如

这可能并不简单,但我想我会把它扔出去:

我想到用一个分部类扩展EF中的模型第一实体,以添加如下数据注释元素:

[Required]
string MyString {get;set;}
但是,如果我在一个多租户系统中,我可能希望自定义在传递给最终客户机时实际需要哪些字段,那么我可以根据客户机配置设置的方式(例如在另一个表中)动态设置注释吗

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

任何人对如何实现这一目标有任何见解或想法都将是伟大的

谢谢,
Brent

您不能动态更改属性

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


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

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

下面是一个视频链接,介绍如何使用api。


注意:需要设置数据库以适应所有不同的配置。例如,如果在一个上下文中FirstName是必需的,而在另一个上下文中FirstName不是必需的,那么您的数据库应该允许NULL以处理这两种情况。

我认为您可能已经为我指明了正确的方向。找到了我正在查看的两个链接:和。一旦我投入其中,我会发布更多。它让我朝着正确的方向看。我联系了朱莉·勒曼和尼希尔·科塔里,他们总结了一个例子。MSFT从来没有使用过它,看起来我的任务是使用类似的东西,除非我自己建造一些东西。