带有实体框架的动态自定义属性

本文关键字:动态 自定义属性 框架 实体 | 更新日期: 2023-09-27 18:01:35

OK,

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

我想到了用分部类扩展EF中的Model First实体,以添加数据注释元素,比如

[Required]
string MyString {get;set;}

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

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

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

谢谢,布伦特

带有实体框架的动态自定义属性

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

这里有一个视频链接,描述了使用api的情况。Fluent Api

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

您不能动态更改属性。

一种选择是动态地封装类型,可能继承一些类(或实现一个接口(,这是您实际使用的。尽管我不确定这是否适用于EF。

另一种可能性是,如果EF有另一种方法,你可以告诉它同样的事情,但我对EF了解不多,所以我不知道是否存在这样的东西。