ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2019-11-22 02:08:11  阅读:279  来源: 互联网

标签:entity-framework-6 net-4-5 code-first c entity-framework


我正在使用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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有