[英]Map System.Uri using Entity Framework Fluent Api
非常簡單的問題。 我有一個具有System.Uri
類型屬性的模型。 Uri
沒有默認的無參數構造函數,也沒有ID字段。 有沒有辦法覆蓋我的模型生成,以自定義的方式將其存儲在數據庫中(例如,只是作為一個string
)? 在NHibernate中,我之前通過實現IUserType
實現了這IUserType
,但我在CodeFirst中找不到類似的機制。
顯然,我可以創建一個使用Uri
的自定義類型並公開常規的可映射屬性和構造函數,我只是好奇是否有任何方法來映射這個系統類型,這樣我就不必像這樣做一個包裝器。
這是一個非常古老的問題,但我今天也遇到了同樣的問題。 使用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());
}
}
EF不支持NH等自定義類型映射。
特別是對於System.Uri,我使用包裝器屬性並將實際值映射為字符串; 沒那么糟糕。
不幸的是,沒有直接的方法將System.Uri
映射到EF的string
。
但是,您可以使用數據注釋並將URL屬性歸屬如下:
[DataType(DataType.Url)]
public string Link { get; set; }
這將告訴一些服務,這應該顯示和驗證為URL(例如,ASP.NET和Silverlight內置支持它)。
試試這個..
[Column(Name="MyUri", TypeName="string")]
public Uri MyUri
確保添加Column Attribute所需的引用
using System.ComponentModel.DataAnnotations;
希望有幫助......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.