实体框架4-自定义复杂类型映射

2023-12-23

我有一个写得不好的遗留数据库架构,我正在通过 EF Code First 使用它。我目前正在映射 POCO 实体,并希望创建一个“地址”复杂类型,并在存储街道地址信息的任何地方使用它。不幸的是,并非所有地址字段在数据库中的命名都相同(即,一个表可能具有“Address1”,而另一个表可能具有“Street1”,即使它们引用相同的事物。

有没有办法根据给定实体为复杂类型创建自定义映射?该映射是什么样的?


是的,您可以使用 Fluent API 来实现这一点。这是一个例子:

public class User
{
    public int UserId { get; set; }   
    public Address Address { get; set; }
}

public class Customer
{
    public int CustomerId { get; set; }   
    public Address Address { get; set; }
}

[ComplexType]
public class Address
{
    public string Street { get; set; }    
    public string City { get; set; }
}

public class Context : DbContext
{    
    public DbSet<User> Users { get; set; }
    public DbSet<Customer> Customers { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {       
        modelBuilder.Entity<User>().Property(u => u.Address.Street)
                                   .HasColumnName("UserStreet");

        modelBuilder.Entity<Customer>().Property(u => u.Address.Street)
                                       .HasColumnName("CustomerStreet");         
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实体框架4-自定义复杂类型映射 的相关文章

  • 在程序集“SMSApp”中发现了不止一种迁移配置类型。指定要使用的名称

    我正在使用代码优先方法开发 mvc 5 应用程序 我面临一个问题 第一次当我尝试下面的命令时 它起作用并在该数据库中生成表 但是当我更改了更多类 然后尝试前两个查询时 它在这种情况下有效 但是当我尝试第三个命令时 它给了我这条消息 Firs
  • 实体框架 ObjectContext 是否正确实现了工作单元模式?

    实体框架 4 STE 具有单表博客的简单数据库 具有 BlogID PK 列 var samplesDbEntities new SamplesDBEntities var blogId Guid NewGuid samplesDbEnti
  • 实体框架 - 外键上的双向一对一关系

    我有两个实体 例如 Hat 和 Owner Owner Hat 0 1 1 ID ID Name Size HatId OwnerId 每个主人都有他的帽子 有些帽子没有主人 我创建了模型 public class Owner Key pu
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 将对象列表添加到 ef 中的上下文

    是否可以在不使用 foreach addObject 的情况下将对象列表添加到实体框架中的 Context 感谢帮助 从 EntityFramework 6 开始 您可以使用DbSet AddRange 方法 IEnumerable htt
  • 使用外键引用创建新的 EF 对象,而不加载整个重新引用对象

    我想创建一个新的 EF 对象 它引用另一个对象 我的示例中的 aspnet userId 而不加载外部 键 对象 所以本质上我想做以下事情 buskerSet bs new buskerSet bs Title title bs Image
  • 乐观并发:IsConcurrencyToken 和 RowVersion

    我正在创建将在我的应用程序中使用的默认并发策略 我决定采取乐观的策略 我的所有实体都映射为Table per Type TPT 使用继承 我很快了解到 在实体框架上使用带有继承的 RowVersion 类型的列时存在问题 Product I
  • EF4 Code First:如何在不添加导航属性的情况下添加关系

    我应该如何使用 Code First 但不使用任何导航属性来定义关系 之前 我通过在关系的两端使用导航属性来定义一对多和多对多 并在数据库中创建适当的关系 这是类的精简版本 为了简单起见 我已将多对多关系转换为一对多关系 public cl
  • 查找导航属性的相关 FK 属性

    在运行时 我想查找 EntityObject 是否也具有给定 NavigationProperty 的外键属性 我在下面的两个步骤中做到了这一点 我想这将需要一些元数据查询 我不确定如何测试元数据类是否指向特定 EntityObject 类
  • 如何在此 MSDN 示例中使用 Order By

    我正在尝试弄清楚如何使用这个 orderBy 参数 我不确定我应该传递什么 http www asp net mvc tutorials getting started with ef using mvc implementing the
  • 将数据库优先迁移到代码优先 - 从发布切换到迁移

    我们需要将现有项目从数据库优先迁移到代码优先 每个环境 DEV TEST PROD 的数据库版本略有不同 差异在于 DEV 中的更改可能尚未推送到 TEST 和 PROD 我们使用实体框架 6 1 3 我们有一个数据库项目部署数据库 发布操
  • 谁能发现为什么我在测试 EF 5 beta 时不断遇到此错误

    安装了 Visual Studio 11 Beta 因为想要测试 EF 5 Beta 但一直遇到此错误 未找到方法 Void System Data Objects ObjectContextOptions set UseConsisten
  • EF4 如何调用标量 UDF

    我试图从实体框架调用 SQL Server 中的标量 UDF 它显示在 商店 部分的模型浏览器中 任何帮助表示赞赏 In the EDMX File it shows up in the storage model
  • 如何使用实体框架 Fluent API 配置多对多关系

    我试图首先在 EF 代码中建立多对多关系 但默认约定是错误的 以下类描述了这种关系 class Product public int Id get set public string Name get set class Account p
  • 实体框架 4:成功保存时的 ObjectContext 事件

    有没有什么好的方法可以检测到ObjectContext更改实际上已提交 SavingChanges发生在进入数据存储之前 但我还需要一种方法来知道这些更改是否实际提交 提前致谢 约翰 Update 我拥有的是代码优先的 DbContext
  • 实体框架死锁问题

    我在使用 NET 4 的新实体框架时遇到了一个奇怪的问题 我有一个 SQL Server 2005 EXPRESS 数据库 我的服务使用实体框架将数据写入两个表 假设表是 TableA 和 TableB TableB 具有 TableA 的
  • 当实体集合实体已附加时尝试将新的 EF4 实体附加到 ObjectContext 时出现问题

    解释起来有点复杂 所以请耐心等待 我有一个 ASP NET MVC 2 项目正在慢慢地杀死我 在该项目中 我尝试获取表单数据并将其转换为要创建或更新的实体 具体取决于情况的上下文 最相关的部分 伪代码 Entity Game Scalar
  • 使用更新的值重新加载实体框架上下文中的对象

    我有一个从数据库中提取的 EF 对象 然后 我通过使用另一个函数调用来更新数据库中的相应行DBContext 在此更新之后 我想使用更新后的内容重新加载对象的内容 但是 EF 上下文似乎缓存了这些内容 这是代码示例 我删除了一些不相关的内容
  • ASP.Net MVC 3,复杂对象和延迟加载

    首先 我是 ASP Net MVC 3 的新手 而且我也在使用 EF 4 1 我有一个复杂的对象 类似于包含类别对象的产品对象 所以我们有 Product CategoryId Product Category 和一些额外的属性 我还有一个
  • 实体框架和数据库集

    我正在尝试设置一个通用接口来从存储库中检索实体 问题是我需要从 WCF 服务请求数据 而据我所知 泛型不能与操作合约一起使用 所以我有这个在控制台应用程序中工作 而不是使用服务调用 public virtual List

随机推荐