假设我有一个名为 Users 的表,其中包含您的典型信息:Id、Name、Street、City——很像这里的示例:
除其他外,这篇文章指出:
“Code First 有一个复杂类型发现的概念,它基于一组约定工作。约定是,如果 Code First 发现一个无法推断主键的类,并且没有通过 Data Annotations 或 fluent API 注册主键, 则该类型将自动注册为复杂类型。复杂类型检测还要求该类型不具有引用实体类型的属性(即所有属性必须是标量类型)并且不从另一个类型上的集合属性引用。” 我的 Address 类符合这些标准:它由字符串组成,不在其他任何地方使用。
但是,在应用程序中(我不确定这是否有任何区别),我们将用户称为其他东西 - 例如,Techs。我想将用户的地址列分解为一个地址,以便每个技术人员都可以拥有自己的地址。根据上面的文章,EF 应该自动推断并处理复杂类型。但是,当上下文试图给我一个技术时,我得到的是以下例外:
System.Data.EntityCommandExecutionException: An error occurred while executing t
he command definition. See the inner exception for details. ---> System.Data.Sql
Client.SqlException: Invalid column name 'Address_Street'.
Invalid column name 'Address_City'.
Invalid column name 'Address_State'.
Invalid column name 'Address_Zip'.
看起来它试图理解 Tech.Address 属性,但给它的每个子属性都赋予了错误的名称(例如,“Address_City”而不是“City”)。
关于如何纠正这个问题的任何想法?