不同程序集中的实体容器和模型生成

2024-04-28

我正在做一些重构,并尝试重用我生成的实体模型。我的应用程序有一些程序集,其中一个是我的外向公共类型 (API),另一个包含提供程序的实现(例如日志)。

我想拆分实体和模型的生成,以便实体位于 API 程序集中,容器位于实现程序集中。这可能吗?


有可能。我就是这样做的。

  • Assembly A
    • 数据库.EDMX
    • 型号.TT
    • 模型.cs
  • Assembly B
    • 数据库.EDMX (添加为链接 http://msdn.microsoft.com/en-us/library/9f4t9t92(VS.80).aspx到程序集 A 中的真实文件)
    • 实体容器.TT
    • 实体容器.cs

这就是一切的安排。这些是粗略的步骤:

  1. 右键单击 A 中的 EDMX(公共 API 程序集)并添加代码生成文件
  2. 将 TT 添加到项目中。将其称为模型,因为它仅包含模型。
  3. 编辑了 TT 并删除了实体容器的代码生成
  4. 在程序集 B(内部实现)中添加 Database.EDMA 作为链接
  5. 在程序集B中打开,右键单击并添加代码生成文件
  6. 将 TT 添加到项目 B。将其称为 EntityContainer,因为它将仅包含该 TT。
  7. Edited TT to do the following
    • 删除了实体创建步骤
    • 将 Database.EDMX 的路径更改为指向 A 中原始副本的相对路径
    • Added a using对于我的模型

希望这一切都能正确编译和工作(我距离编译和测试所有内容还很远)。到目前为止看起来不错。


附加变更:

在我的实体容器 TT 中,我必须将 EscapeEndTypeName 的定义修改为以下内容:

string EscapeEndTypeName(AssociationType association, int index, 
    CodeGenerationTools code)
{
    EntityType entity = association.AssociationEndMembers[index]
      .GetEntityType();
    return code.CreateFullName(
      code.EscapeNamespace(association.NamespaceName), code.Escape(entity));
}

我在用着association.NamespaceName因为它包含来自其他程序集的正确命名空间。


我不知道答案,但我认为你的问题本质上相当于“是否有可能导致一个项目中的 T4 模板将代码发送到另一个项目中?”如果你能做到这一点,那么你就可以做你想做的事。但请注意,这在 EF 4 中要容易得多 http://blogs.msdn.com/efdesign/archive/2009/01/22/customizing-entity-classes-with-t4.aspx.

因此,我认为如果您直接提出这个问题,您可能会得到有用的反馈。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同程序集中的实体容器和模型生成 的相关文章

  • 通过 TCP 传输程序集

    我目前正在尝试通过 TCP 连接发送序列化对象 如下所示 BinaryFormatter formatter new BinaryFormatter formatter Serialize clientStream Object Assem
  • MySql 中的 EntityFunctions 支持

    我在 MySQL 中使用 EntityFunctions DiffMinutes 时遇到错误 下面是我的代码 return db DiscoveredDevices Where m gt EntityFunctions DiffMinute
  • 在使用 linq-to-entities 的一对多连接中仅获取一条(最后一条)记录

    我在 linq to entities 中有以下内容 clientprojects from p in this SAPMappingEntities SAP Master Projects join c in this SAPMappin
  • 如何从小型、可重用的查询组成实体框架查询?

    我的应用程序中有一些 相当多余的 查询 如下所示 var last30Days DateTime Today AddDays 30 from b in Building let issueSeverity from u in Users w
  • 在运行时合并两个程序集 - C#

    是否可以在运行时合并两个程序集 以便在迭代 ExportedTypes 时返回两个原始程序集中的所有类型 The why 我使用数据库迁移框架来更新我的数据库 它采用由特殊类组成的单个程序集 用于定义对数据库所做的修改 我有两个非常相似的数
  • 为什么程序集绑定重定向在我的网站中不起作用?

    我有一个网站项目 我使用内置的开发 Web 服务器从 Visual Studio 运行 网站的虚拟路径设置为 web config 包含一个运行时元素
  • 动态替换 C# 方法的内容?

    我想要做的是更改 C 方法在调用时的执行方式 以便我可以编写如下内容 Distributed public DTask
  • .NET Core 中的程序集绑定重定向

    如何在 NET Core 中进行程序集绑定重定向 我发现这个问题被问了几次 但没有提供解决方案 情况微不足道 我有一个引用版本 10 中的程序集 A 的包 我想使用版本 12 中的程序集 A 在标准 NET 中 它可以完美地与此配合使用
  • 有没有办法在没有数据源的情况下创建 LINQ 查询作为变量?

    前言 我的核心问题与此非常相似 如何编写一个干净的存储库而不将 IQueryable 暴露给应用程序的其余部分 https stackoverflow com questions 1030992 how can i write a clea
  • 列出所有可用的 .NET 程序集

    列出所有可用的 NET 2 0 程序集的最佳方法是什么 所需列表的一个示例是当您在 NET 选项卡中执行 添加引用 时 MS Visual Studio 显示的列表 我读过 Visual studio 使用它自己的目录配置 GAC 和 NE
  • 实体框架 4 Single() vs First() vs FirstOrDefault()

    我花了很长时间寻找查询单个项目的不同方法的比较 以及何时使用每种方法 有谁有一个比较所有这些的链接 或者一个关于为什么你会使用其中一个而不是另一个的快速解释 还有更多我不知道的运营商吗 谢谢 以下是不同方法的概述 Find 当您想通过主键获
  • EntityFrameworkCore.Sqlite - 如何查询包含给定列表所有项目的子列表的实体?

    给定以下模型 public class ApiImageModel public int ID get set public List
  • 如何使用 Linq 从父级列表中选择复杂的子对象并对其进行分组

    如何使用 Linq 从父级列表中选择复杂的子对象并对其进行分组 我有一个订单每个订单对象都有一个订单产品变型列表 OrderLineList 以及每个订单产品变体对象有 ProductVariant 然后产品变体对象将有一个Product包
  • 如何修补 .NET 程序集?

    如果我编译一个 C 项目两次 我将得到两个程序集 这些程序集并不完全相同 使用二进制差异 我可以想到为什么会这样 但事实仍然是两个程序集的源是相同的 我关心的是在这些程序集之间创建补丁 并将该补丁应用到客户计算机上 有谁知道我可以用来创建和
  • 实体框架首先选择不带 .ToList() 的新 POCO

    我正在创建一个具有服务层 WCF 网站 和 Silverlight 4 客户端的应用程序 RIA 服务不是一种选择 因此我们创建中间类来来回传递 为了这个问题的目的 我们假设我来回传递美味Food对象 public class FoodDa
  • 如何在 Linq 中执行 SQL Like %?

    我有一个 SQL 过程 我试图将其转换为 Linq SELECT O Id O Name as Organization FROM Organizations O JOIN OrganizationsHierarchy OH ON O Id
  • LINQ 生成具有重复嵌套选择的 SQL

    我对 NET 实体框架非常陌生 我认为它很棒 但不知怎的 我遇到了这个奇怪的问题 抱歉西班牙语 但我的程序是用那种语言写的 无论如何 这没什么大不了的 只是列或属性名称 我正在执行正常的 LINQ To Entities 查询来获取 Ult
  • Linq:方法无法转换为存储表达式

    我目前正在尝试限制哪些用户可以访问哪些组 并通过使用 linq 来做到这一点 当我将相关组添加到视图时 出现了我的问题 我不断收到的错误是 LINQ to Entities 无法识别方法 System String GetUserId Sy
  • 如何将资源添加到现有签名程序集

    鉴于 程序集 例如 SomeLib dll 文本文件 例如 myconfig xml 我需要将文件 myconfig xml 嵌入到现有程序集 SomeLib dll 中 在按 回答 之前请考虑 我知道编译过程中的资源嵌入 csc exe
  • 实体框架不查询派生类 - DbOfTypeExpression 中的错误

    我有一个基类和两个派生类 每个派生类都实现相同的类型作为属性 唯一的区别是属性名称 遗憾的是我对类设计没有太大影响 gt 它们是从 wsdl 文件生成的 然后我在 BaseType 上有一个属性来封装公共属性 计划是在我的网络视图等中使用此

随机推荐

  • Java HashSet 具有自定义相等标准? [复制]

    这个问题在这里已经有答案了 我一直在寻找类似于 Java TreeSet 在实例化时接收自定义比较器的能力 因此我不需要使用对象的默认相等 和哈希码 标准 我能想到的最接近的方法是将我的对象包装在一个私有的自定义类中 但这看起来很老套 这最
  • GSON 预期为 BEGIN_ARRAY,但实际为 BEGIN_OBJECT

    当我仅收到列表中的一项时 我收到此错误 我在服务器端 REST Web 服务中使用 Jersey 只有当列表返回一个元素并且它具有0 elements I get java lang NullPointerException但是当它有多个时
  • 仅使用整数求平方根

    最近 我在某人的编程课上遇到了一个问题 它要求他们仅使用整数来计算平方根 他们用一个整数来表示小数点之前的部分 用另一个整数来表示小数点之后的部分 问题说不允许使用浮点数 然而 经过一段时间的思考 我似乎无法想出一种不使用浮点的方法 我用谷
  • 如何在 Angular 2 中动态更改 :host 中的 CSS?

    如何动态更改组件宿主的 CSS 属性 我有一个组件 在它的 CSS 中我给了它一个样式 host overflow x hidden 在子组件中单击按钮时 我需要添加overflow y hidden到主机组件 我如何实现这种行为 这是一个
  • 为什么 res.end 和 res.send 的字体不同?

    我有以下最小的基本 Express Node js 应用程序 var express require express var app express app get function req res res send Hello app l
  • C++变量声明和初始化规则

    考虑以下声明和初始化类型变量的方法C C c1 C c2 c2 C C c3 C C c4 C 所有这些是否完全等同 或者其中一些可以根据确切的定义而有所不同C 假设它有公共默认值和复制构造函数 这些意味着 C c1 default con
  • 我可以删除 Windows Azure 表存储中的整个分区吗?

    我在分区中有一组行 代表一些缓存的数据 我想刷新该缓存而不关心已经存在的内容 是否可以删除整个分区而无需执行任何选择 不 但您可以删除整个table只需一次调用 因此您可能会考虑将分区改为单独的表 但是 当然 您不能进行跨表查询
  • 打开文件对象的大小

    有没有办法找到当前打开的文件对象的大小 具体来说 我正在使用 tarfile 模块来创建 tarfile 但我不希望 tarfile 超过特定大小 据我所知 tarfile 对象是类似文件的对象 所以我想通用的解决方案会起作用 ls la
  • 测试方法的存在性

    我正在尝试使一些现有的 JS 向后兼容 如果一个方法不存在 我需要重写它 否则只返回现有的方法 这是我到目前为止的代码 this grid getDataSource function if getDataSource undefined
  • 使用useReducer时如何避免耦合?

    为了防止将回调传递给我正在使用的子组件useReducer反而 这避免了子组件在每个父渲染上重新渲染的问题 但缺点似乎是父组件和子组件之间的紧密耦合 通过紧密耦合 我的意思是子级需要明确了解父级定义的减速器所期望的操作的形状 例如 想象一个
  • C# 中是否有相当于 php array_merge 的函数

    如果不是 创建它的最佳方法是什么 注意 合并不仅仅是附加 它融合了相同的键 此功能存在于 List 元素上 在 C 中 数组是固定宽度的项 因此在不创建新数组的情况下无法修改大小 然而 列表却是另一回事 你可以做 List
  • 添加原始哈希以在 git rebase 上提交(使用新根)

    我有一个代码库 以前用 SVN 管理 但现在用 git 管理 当代码迁移到 git 时 历史记录就丢失了 我已经设法恢复 SVN 历史记录 https stackoverflow com questions 79165 现在我正在努力git
  • 如何使用 unarchivedObjectOfClass:fromData:error: 取消归档数据?

    我在用unarchiveObjectWithData从中取消存档数据NSUserDefaults它运行良好 但在 iOS 12 0 中已被弃用 Xcode 建议使用unarchivedObjectOfClass fromData error
  • 从字典返回类属性的数组

    Background 最近试图回答一个question https stackoverflow com q 58835358 9758194 我自己在想是否可以直接从字典项返回类对象属性的数组 Code Imagine TstClass作为
  • AJV自定义关键字验证

    我正在使用 AJV 库来验证我的 JSON 架构 我希望能够验证Startdate成为一个字符串 如果不是字符串 则应将其转换为N A 目前 它仅转换undefined to N A 但是 在这些情况下 它不会按预期工作 null gt 空
  • 在 Selenium Node JS 中打开 gecko 驱动程序的日志记录

    我目前正在使用Selenium 与 Node Js and FireFox并想打开日志记录功能壁虎司机 但我不确定如何 另外我还想知道在哪里可以找到日志 目前这是我实例化驱动程序的方式 var fOptions new firefox Op
  • .net 日历 - 使整个单元执行回发(可点击)

    我已经启动并运行了一个 net 日历 并从数据库中获取信息 默认情况下 天数会应用回发操作 我想做的是将该操作应用于整个单元格 这样用户就不需要仅单击文本链接 我是 dayRenderer 操作 我有以下行来尝试复制该操作 但第二个参数我不
  • 如何强制操作系统收回内存? (C++)

    在我的 C 代码中 我分配了大量内存来创建树 然后在每个节点中使用 删除 来释放内存 删除所有内容后 我检查操作系统使用的内存量 发现内存未释放 这是预期的 因为该进程不会立即将内存返回给操作系统 因为它仍然可能会再次使用它 问题是 我在删
  • 您可以通过 facebook graph api 来控制和定位页面帖子吗?

    Enabling post privacy gating in the Page s privacy settings allows creating of posts with separate Gating and Targeting
  • 不同程序集中的实体容器和模型生成

    我正在做一些重构 并尝试重用我生成的实体模型 我的应用程序有一些程序集 其中一个是我的外向公共类型 API 另一个包含提供程序的实现 例如日志 我想拆分实体和模型的生成 以便实体位于 API 程序集中 容器位于实现程序集中 这可能吗 有可能