【发布时间】:2019-03-28 14:03:48
【问题描述】:
我有这个模型:
public class Book
{
public int Id { get; set; }
public string Name { get; set; }
public Uri Link { get; set; }
}
我使用以下代码将其添加到fluent-api:
builder.Entity<Book>(entity => {
entity.HasKey(b => b.Id);
});
当我运行这个时:
add-migration InitialMigration -context MyAppContext
然后我得到:
没有为实体类型“Uri”找到合适的构造函数。以下参数无法绑定到实体的属性:'uriString'、'uriString'、'dontEscape'、'baseUri'、'relativeUri'、'dontEscape'、'uriString'、'uriKind'、'baseUri'、' relativeUri'、'serializationInfo'、'streamingContext'、'baseUri'、'relativeUri'、'flags'、'uriParser'、'uri'。
【问题讨论】:
-
由于 Uri 不是平面类型,它必须映射到另一个表,其列与其属性匹配。但是,要让 EF 能够进行映射(尤其是具体化值),所有映射的属性都必须有一个 setter,并且实体类型必须有一个无参数的构造函数,而 Uri 则不是这样。
-
那么解决办法是什么?
-
要么创建一个可以跟踪 Uri (必要)属性的 POCO 类,要么使用可以转换为并适合单个列的类型。
-
POCO 到底是什么意思?
标签: asp.net entity-framework asp.net-core