EntityFramework 如何获取实体的 Key

EF 可以通过 db.Set<Order>().Find(12) 获取实体,但如何反过来通过实体获取 Key 呢?

因为做了一个通用的功能,传来的实体是 object 类型,可能是 Order 也可能是 Product 还可能是其它的。


慕婉清6462132
浏览 794回答 2
2回答

隔江千里

试试下面扩展方法:1&nbsp;public&nbsp;static&nbsp;class&nbsp;DbContextExtensions&nbsp;{ 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;&nbsp;static&nbsp;EntityKey&nbsp;GetEntityKey(this&nbsp;DbContext&nbsp;context,&nbsp;object&nbsp;entity)&nbsp;{ 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;adapter&nbsp;=&nbsp;context&nbsp;as&nbsp;IObjectContextAdapter; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;entry&nbsp;=&nbsp;adapter.ObjectContext.ObjectStateManager.GetObjectStateEntry(entity); 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;entry.EntityKey; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} 7&nbsp;}没严格测试,自己再调整下好了。

犯罪嫌疑人X

强制转换为Order类型或Product类型后再获到
打开App,查看更多内容
随时随地看视频慕课网APP