与实体框架“代码优先”的映射

2024-01-07

我正在尝试使用实体框架“代码优先”来映射我的实体,但在映射复杂类型时遇到问题。这是我的简化示例:

域对象看起来像:

public class Customer
{
    public Address DeliveryAddress {get; set;}
}

public class Address
{
    public string StreetName {get; set;}
    public string StreetNumber {get; set;}
    public City City {get; set;}
}

public class City
{
    public int Id {get; set;}
    public string Name {get; set;}
}

和映射:

public class CustomerConfiguration : EntityConfiguration<Customer>
{
    public CustomerConfiguration()
    {
        this.HasKey(b => b.Id);
        this.Property(b => b.Id).IsIdentity();

        this.MapSingleType(x => new
        {
            Id = x.Id,
            DeliveryAddress_StreetName = x.DeliveryAddress.StreetName,
            DeliveryAddress_StreetNumber = x.DeliveryAddress.StreetNumber,
            DeliveryAddress_CityId = x.DeliveryAddress.City.Id, // this line causes an exception
        }).ToTable("Customer");
    }
}

public class AddressConfiguration : ComplexTypeConfiguration<Address>
{
    public AddressConfiguration()
    {           
        this.Property(b => b.StreetName).HasMaxLength(100).IsRequired().IsUnicode();
        this.Property(b => b.StreetNumber).HasMaxLength(6).IsRequired().IsUnicode();
}

public class CityConfiguration : EntityConfiguration<City>
{
    public CityConfiguration()
    {
        this.HasKey(b => b.Id);
        this.Property(b => b.Id).IsIdentity();
        this.Property(b => b.Name).IsRequired().HasMaxLength(200).IsUnicode();

        this.MapSingleType(x => new
        {
            Id = x.Id,
            Name = x.Name,
        }).ToTable("City");
    }
}

抛出的异常是:“字典中不存在给定的键。”

谁能帮我?


您正在尝试将站点实体类型添加到地址复杂类型。这是不可能的。 与实体一样,复杂类型由标量属性或其他复杂类型属性组成。由于复杂类型没有键,因此除了父对象之外,实体框架无法管理复杂类型对象。
看看复杂型文章 http://msdn.microsoft.com/en-us/library/bb738472.aspx了解更多信息。

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

与实体框架“代码优先”的映射 的相关文章

随机推荐

  • Flask SQLAlchemy 对关系中的对象进行分页

    所以我有两个模型 文章和标签 以及正确设置的 m2m 关系 我有一条 文章 标签 类型的路线 我想仅显示与该标签相关的那些文章 我已经解决了这个问题 但我正在寻找更优雅的解决方案 包括分页但我无法使用paginate在文章列表上 因为它不是
  • 条件构造在 Python 正则表达式中不起作用

    我是 python 的新手 我想在中使用我的正则表达式re sub 我试穿了regex101 https regex101 com r InljCc 1它有效 不知何故 当我尝试在我的 python 版本 3 6 上使用它时 它无法正常工作
  • “无法设置插件占位符”消息?

    Xcode 9 1 模拟器10 0 操作系统 10 12 6 我想将我的贴纸包的新版本上传到 iTunes Connect 但 产品 gt 存档 是灰色的 所以我运行模拟器并得到 无法为 名称 设置插件占位符 在全世界任何地方只有一个答案
  • 这两种关系对于联合运算是否兼容?

    我不确定以下两种关系是否适合联合 R lt schema name B 1 2 2 3 3 And Q lt schema name A B 5 1 6 1 4 2 3 4 我想加入工会 Q U R 可以吗 结果如何 并集运算符要求两个关系
  • svn:ignore 的双重性质

    阅读周围 svn ignore 命令似乎以两种方式之一工作 如果文件或目录尚未处于版本控制之下 则元数据将添加到存储库中 而忽略签出该项目的所有其他团队成员的文件或目录 如果文件或目录已处于版本控制之下 则忽略将仅在本地应用 并且不会将元数
  • 将数据框组合成列表

    我正在尝试将多个数据帧存储在列表中 但是 在某些时候 数据帧最终会转换为列表 因此我最终会得到一个列表列表 我真正想做的就是将所有数据帧以某种结构保存在一起 这是失败的代码 all dframes lt list initialise a
  • WinSCP 命令行被动模式

    我通过命令行调用 WinSCP 但我不知道如何为脚本正确设置被动模式 现在是脚本 option batch on option confirm off open ftp user and pass details 21 cd out opt
  • Spring/Hibernate 连接泄漏与 ScrollableResults

    我目前正在调查以下问题 该问题也影响我们的生产环境https github com querydsl querydsl issues 3089 https github com querydsl querydsl issues 3089 这
  • 递归多对多关系的相关名称不起作用

    多对多 非递归 class A models Model pass class B models Model parents models ManyToManyField A related name children gt gt gt A
  • 如何通过.apk传递dalvik命令行参数?

    我知道可以通过以下方式在Android中启动java程序 adb push hello world zip REMOTE PATH adb shell mkdir REMOTE PATH dalvik cache adb shell dal
  • 搜索方法迭代完成后重新加载/显示 UISearchDisplayController 的 searchResultsTableView

    我修改了Apple的示例iOS项目的代码表格搜索 http developer apple com library ios samplecode TableSearch Introduction Intro html以便通过解析 Web 服
  • 替换图像的颜色

    我试图用白色替换图片的黑色 反之亦然 这实际上是为了让我的 OCR 代码可以在白色背景上更好地读取它 当前正在从剪贴板获取图像 Image img Clipboard GetImage pictureBox1 SizeMode Pictur
  • 为什么这么多 wpf 控件实现 CLR 属性而不是依赖属性?

    是因为控件程序员太懒 太难实现还是知识不够 无论它们是来自第 3 方供应商还是 Microsoft 本身的自定义控件 很多控件通常具有 clr 属性而不是 DP 结果是我无法绑定到它们 wpf 不就是绑定吗 我的下一个问题是 为什么这么多
  • Razor视图引擎,html之间怎么写?

    我的剃刀语法有一些问题 我想知道如何在 html 之间编写 请参阅此示例 ul foreach var x in Model li x Subject Tags nbsp if x Tags null foreach var t in x
  • 如何在 iOS 6.1 上重现网站崩溃

    我收到了一份错误报告这个网站 http festivals ie 在 iOS 6 1 上查看时会崩溃 尽管我猜想 iOS 6 1 附带的浏览器版本比操作系统本身更相关 我没有任何 iOS 设备 因此我不确定如何重现 调查该问题 有人建议我如
  • 将字典转换为结构化格式字符串

    我有一个 Dictionary 对象声明为var as Dictionary of String String 我正在尝试利用通用集合可用的 LINQ 扩展 但我只获得非扩展方法 我需要将 Dictionary 集合转换为具有以下模式的字符
  • 如何使用Istio的Prometheus配置kubernetes hpa?

    我们有一个 Istio 集群 我们正在尝试为 Kubernetes 配置水平 pod 自动缩放 我们希望使用请求计数作为 hpa 的自定义指标 我们如何利用 Istio 的 Prometheus 来达到同样的目的 这个问题比我想象的要复杂得
  • Angular-Gantt - 可以将日期标题更改为“M,T,W,Th ...”而不是日期?

    我正在使用 Angular Gantt js 模块开发一个调度应用程序 它工作正常 gt 除了我想自定义标题以显示日视图比例中的列 M T W Th F 目前它显示像这个演示版本 gt https www angular gantt com
  • 是否可以使用 Jupyter Notebook for AWS Glue 而不是 Zeppelin

    我开始使用 AWS Glue 进行数据 ETL 我已将数据源拉入我的 AWS 数据目录 并准备为我用于测试的一个特定 Postgres 数据库中的数据创建一项作业 我在网上读到 在创作自己的作品时 可以使用 Zeppelin 笔记本 我根本
  • 与实体框架“代码优先”的映射

    我正在尝试使用实体框架 代码优先 来映射我的实体 但在映射复杂类型时遇到问题 这是我的简化示例 域对象看起来像 public class Customer public Address DeliveryAddress get set pub