日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

EntityFramework Core是否可以映射私有属性呢?了解一下。

發布時間:2025/7/25 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EntityFramework Core是否可以映射私有属性呢?了解一下。 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

最近幾天身體有點抱恙,說話都需要勇氣,痛哭。今天簡短的寫一點探索性的內容,僅供了解,感謝您的閱讀。

EF Core映射私有屬性

在EF 6.x系列中寫過一篇文章可以映射私有屬性,說明EF的靈活性以及可擴展性,那么問題來了在EF Core是否同樣可以呢,我們來試試。

public class Blog{public int Id { get; set; }private string Name { get; set; }public string Url { get; set; }public DateTime CreatedTime { get; set; }public DateTime ModifiedTime { get; set; }public byte Status { get; set; }public bool IsDeleted { get; set; }}

如上代碼,我們將Name設置私有屬性,接下來我們利用EF Core提供給我們的APi來訪問是否可以進行映射到數據庫表中呢?我們來嘗試一下。

public class BlogConfiguration : IEntityTypeConfiguration<Blog>{public void Configure(EntityTypeBuilder<Blog> builder){var nonPublicProperties = builder.Metadata.ClrType.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);foreach (var p in nonPublicProperties){builder.Property(p.Name).HasColumnType("VARCHAR(50)");}builder.Property(p => p.CreatedTime).HasColumnType("DATETIME").HasDefaultValueSql("GETDATE()");}} protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.ApplyConfiguration(new BlogConfiguration());base.OnModelCreating(modelBuilder);}

在EF Core中如若我們需要訪問元數據,則需要借助于在映射配置中即如上builder中的Metadata屬性來訪問,比如訪問屬性、主鍵、外鍵、導航屬性皆可,接下來我們遷移看看。

通過遷移生成的SQL語句我們就可得出結論:在EF Core中映射私有屬性和EF 6.x如出一轍,只不過使用方式略有不同罷了。

當然實際場景中,若屬性為私有,那就沒有映射到數據庫中的必要了,這里只是作為探討。下面我們再來看看實際場景,比如上述中的Name屬性為計算屬性,那么此時我們會進行如下映射:

public class BlogConfiguration : IEntityTypeConfiguration<Blog>{public void Configure(EntityTypeBuilder<Blog> builder){builder.Property(p => p.Name).IsRequired().HasComputedColumnSql("((N'cnblogs'+CONVERT([CHAR](8),[CreatedTime],(112)))+RIGHT(REPLICATE(N'0',(6))+CONVERT([NVARCHAR],[Id],(0)),(6)))");builder.Property(p => p.CreatedTime).HasColumnType("DATETIME").HasDefaultValueSql("GETDATE()");}}

此時我們在控制臺進行如下提交:

var context = new EFCoreDbContext();context.Add(new Blog(){IsDeleted = false,Status = 0,ModifiedTime = DateTime.Now,Url = "http://www.cnblogs.com/createmyself",Name = "2222"});var result = context.SaveChanges();

因為我們將上述Name配置為計算屬性,但是此時Name屬性中的SET訪問器是公共的,所以可能會有誤操作對其進行賦值,當然即使手動賦值,最終依然能正確提交,結果不受任何影響,只能說這樣可讀性不太好,既然Name為計算屬性即數據庫自動為其賦了值,那么我們為何不將SET訪問器設置為私有的呢,保持其只讀而不可設置呢,改造如下即可:

public string Name { get; private set; }

?如上設置Name為私有即不能手動為其賦值,那么我們可以視為計算屬性或者傳參賦值,如下:

private Blog() { }public Blog(string name){Name = name;}

在EF Core中利用構造函數傳參,那么必須顯式存在無參構造函數,否則拋出異常,你懂的。再進一步講,我們也可將Name屬性作為只作為字段來訪問,配置成如下即可。

public void Configure(EntityTypeBuilder<Blog> builder){var property = builder.Metadata.FindProperty(nameof(Blog.Name));property.SetPropertyAccessMode(PropertyAccessMode.Field);builder.Property(p => p.Name).HasColumnType("VARCHAR(50)");builder.Property(p => p.CreatedTime).HasColumnType("DATETIME").HasDefaultValueSql("GETDATE()");}

總結

本節稍微探討了下EF Core中如何映射私有屬性,雖然沒有什么實際作用,可作為了解。想必很多時候,我們都會將屬性GET或者SET訪問器都設置為公共的,雖然簡便但可讀性并那么強,是計算屬性、還是字段等等,都應顯式設置,這樣可讀性會更好。

總結

以上是生活随笔為你收集整理的EntityFramework Core是否可以映射私有属性呢?了解一下。的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩人妻一区二区 | 国产系列在线 | 69视频在线免费观看 | 无码精品视频一区二区三区 | 欧美性受xxxxx| 亚洲精品精品 | 久色99 | 国产做a视频 | 成人免费视频网站在线看 | 狠狠综合 | 人人草人人爽 | av国语| 国产一级特黄 | 国产最爽的乱淫视频国语对白 | 色哟哟一区二区三区 | 国产国产乱老熟女视频网站97 | 欧美一区二区精品 | 麻豆视屏| 体内精69xxxxxx | 色婷婷激情av | 五十路黄色片 | 怡红院毛片 | 国产尤物视频在线 | 性久久久久久久久久久久 | 中文字幕无码av波多野吉衣 | 好色999| 中文字字幕在线观看 | 亚洲精品日韩丝袜精品 | 992tv人人草| 国产激情综合五月久久 | 欧美一级性 | 国产黄色一级大片 | 色噜噜狠狠狠综合曰曰曰 | 一道本无吗一区 | 国产福利视频在线观看 | 澳门黄色网 | 黄网站在线观 | 久久艹精品 | 日日爱夜夜操 | 国产视频一二三区 | 国产原创视频 | 狠狠撸在线视频 | 天堂在线视频tv | 在线观看h视频 | 亚瑟av | 久久亚洲av午夜福利精品一区 | 久久视频免费在线观看 | 国产精品久久久免费观看 | 99在线观看免费视频 | 欧美日韩一区二区在线观看视频 | 国内精品久久久久久久 | 麻豆国产一区二区 | 精品无码久久久久久久久 | 黄色网页免费观看 | 丰满人妻一区二区三区53视频 | 日本大胆裸体做爰视频 | 黄色激情在线 | 污网站在线看 | 国产高潮国产高潮久久久91 | a视频在线看| 久久一久久 | 精品国产一区二区三区久久久久久 | 欧美一二三视频 | 亚洲欧美综合精品久久成人 | 国产自产在线视频 | 国产一级片 | 国产影视一区二区 | 亚洲国内精品 | 黄色av电影在线 | 免费在线日本 | 国产一区一一区高清不卡 | 在线观看国产精品视频 | 精品在线视频免费 | 欧洲免费毛片 | 伊人av影院| 嫩草在线观看视频 | 亚洲s码欧洲m码国产av | 国产一极毛片 | 红桃视频国产精品 | 精品国产鲁一鲁一区二区张丽 | 日韩无套无码精品 | 黄色网战入口 | 乱色熟女综合一区二区三区 | 天堂在线观看中文字幕 | 男人天堂五月天 | 精品国产乱码久久久久久久 | 91av不卡 | 裸尼姑熟蜜桃 | 国产精品无码久久久久 | 开心激情综合 | 超碰人人干人人 | 97xxx| 尤物视频网站在线观看 | 国产精品卡一卡二 | 青青青青在线 | 亚洲在线不卡 | 伊人影院综合 | 亚洲乱码中文字幕久久孕妇黑人 | 精品无码一区二区三区电影桃花 |