1:添加記錄后,如何獲取新添加的ID的值
比如,一個實體 TestEntity 對應一個表TestEntity(ID主鍵自增,Name,age),使用linq to ef 添加一條記錄后,如何獲取新記錄的ID值?如下代碼:
var te = new TestEntity () { Name = "名字", Age = 21 }; using (EFDbContext context = new EFDbContext()) { context.TestEntity .Add(te); context.SaveChanges(); return te.ID; }
調用SaveChanges()之后,ef.ID的值就是數據庫中新加記錄對應自增標識列的值。Linq to ef智能地判斷出ID就是自增主鍵標識列。 他給我們返回了。
2:列名叫“ID”的列,它不是自增列,linq to ef不讓插入的問題
如標題,就是,列名叫“ID”的列,它不是主鍵,也不是主鍵,linq to ef不讓插入。我已經給ID賦值了 但它一直提示 ID不能為NULL ,打斷點,看了,也有值!
代碼走到SaveChanges(),就報異常,提示ID不能為空!超蛋疼...
原因:默認情況,linq to ef認為只要實體類中有ID屬性,數據庫對應的是一定是自增標識列。
解決方式:
1)第一步
因為EFDbContex繼承自Context類,所以,我們需要從新對它這個叫OnModelCreating的虛函數進行實現
public class TestEntity { [DatabaseGenerated(DatabaseGeneratedOption.None)] public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } }
2)第二步
在實體類叫ID的屬性上加標記實現(記得添加引用):
public class TestEntity { [DatabaseGenerated(DatabaseGeneratedOption.None)] public int ID { get; set; } public string Name { get; set; } public int Age { get; set; } }
原文地址:https://blog.csdn.net/zhifeiya/article/details/25743361