数据库
首页 > 数据库> > C#-定制数据库表的定制实体构建器

C#-定制数据库表的定制实体构建器

作者:互联网

我正在使用Entity Framework 6设计一个多租户应用程序.此应用程序中的一个关键要求是允许每个租户具有自定义表.这意味着一个名称相同的表在模式之间可能有所不同.

例如,一个租户可能有一个“人”表,其中包含:ID,名字,姓氏,出生日期.

另一个租户可能有一个带有以下内容的“人”表:ID,名字,LastnName,BirthDate,FavoriteColor.

当我设计模型时,这就是我所拥有的:

public class Person
{
  public int ID { get; set; }

  public string FirstName { get; set; }

  public string LastName { get; set; }

  public DateTime BirthDate { get; set; }
}

这适用于第一个租户,但是不会加载第二个租户中的custom列.我希望做的是这样的:

public class Person : Dictionary<string, object>
{
  public int ID { get; set; }

  public string FirstName { get; set; }

  public string LastName { get; set; }

  public DateTime BirthDate { get; set; }
}

然后编写一个自定义的模型映射器/构建器,它将没有匹配属性的表列放入字典集合.

这有几个问题:

>实体框架创建一个SELECT语句,该语句列出所有
模型中的属性/列.不知何故,我需要更换
用*列出,以便所有列,甚至EF都不知道
关于,得到回报.
>我需要能够拦截结果集,映射已知列
模型属性,然后将未知列放入
字典.

有可能吗?有解决这个问题的更好方法吗?

解决方法:

我遇到了类似的问题,一个更通用的问题.

在我的应用程序中,最终用户能够定义其on数据对象.在设计时,我什至不了解Person类.从设计的角度来看,这意味着向运行时甚至都不知道的类添加属性.

标签:entity-framework-6,net-4-5,code-first,c,entity-framework
来源: https://codeday.me/bug/20191122/2056404.html