Pau*_*aul 15 c# entity-framework ef-code-first ef-fluent-api
非常简单的问题.我有一个具有属性的模型System.Uri. Uris没有默认的无参数构造函数,也没有ID字段.有没有办法覆盖我的模型生成,以自定义方式将其存储在数据库中(例如,作为一个string)?在NHibernate中,我之前通过实现完成了这个IUserType,但我在CodeFirst中找不到类似的机制.
显然,我可以创建一个使用Uri底层的自定义类型并公开常规的可映射属性和构造函数,我只是好奇是否有任何方法来映射这个系统类型,这样我就不必像这样制作包装器了.
dst*_*stj 17
这是一个非常古老的问题,但我今天也遇到了同样的问题.使用Entity Framework Core 2.1,您可以设置值转换:
public class MyEntityDbConfiguration : IEntityTypeConfiguration<MyEntity>
{
public void Configure(EntityTypeBuilder<MyEntity> builder)
{
builder.Property(e => e.UriField)
.HasConversion(v => v.ToString(), v => new Uri(v));
}
}
public class MyDbContext : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new MyEntityDbConfiguration());
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,没有直接的方法来映射System.Uri到stringEF。
但是,您可以使用数据注释并按如下方式指定您的 URL 属性:
[DataType(DataType.Url)]
public string Link { get; set; }
Run Code Online (Sandbox Code Playgroud)
这将能够告诉某些服务应该将其显示为 URL 并进行验证(例如 ASP.NET 和 Silverlight 已内置对此的支持)。
| 归档时间: |
|
| 查看次数: |
6301 次 |
| 最近记录: |