[英]Entity framework can't add with singleton
我的人員班:
public class User
{
public int Id { get; private set; }
public string Isim { get; set; }
public string Soyad { get; set; }
public User(string isim, string soyad)
{
Isim = isim;
Soyad = soyad;
}
}
我的UserBusiness類:
public sealed class UserBusiness
{
JuqueryDbEntities entity = new JuqueryDbEntities();
private static volatile UserBusiness instance;
private static readonly object syncRoot = new Object();
private UserBusiness() { }
public static UserBusiness Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new UserBusiness();
}
}
return instance;
}
}
public void AddUser(User userToAdd)
{
entity.PersonelTable.Add(userToAdd);
entity.SaveChanges();
}
}
最后,我的網絡表單代碼位於登錄按鈕的onclick后面:
protected void Button1_Click(object sender, EventArgs e)
{
string isim = TextBox1.Text;
string soyad = TextBox2.Text;
var newUser = new User(isim, soyad);
UserBusiness.Instance.AddUser(newUser);
}
這是我的問題:我的UserBusiness類的AddUser方法出錯。 “ entity.PersonelTable.Add(newUser);”中的錯誤 行說:“ System.Data.Entity.DbSet.Add(SuperQquery.PersonelTable)的最佳重載方法匹配有一些無效的參數。” 我在做什么錯(順便說一下,我的ID是自動遞增的,因此我沒有設置任何值。)
您在這里的問題是System.Data.Entity.DbSet
Add
方法根本沒有采用user類型的參數。 像錯誤中提到的
System.Data.Entity.DbSet.Add(SuperQquery.PersonelTable)'具有一些無效的參數
它接受SuperQquery.PersonelTable
類型的SuperQquery.PersonelTable
因此,您需要做的是更改AddUser方法
public void AddUser(User userToAdd)
{
SuperQquery.PersonelTable pt = new SuperQquery.PersonelTable();
pt.FieldName1 = userToAdd.Isim;
pt.FieldName2 = userToAdd.Soyad;
entity.PersonelTable.Add(pt);
entity.SaveChanges();
}
其中,FieldName是數據庫表中列的名稱
編輯:如果可行,我們可以說您將類型user轉換為SuperQquery.PersonelTable,可以在數據庫中插入數據,但是最好的方法是通過新的類PersonelTable來更改User類。邏輯。 無需進行轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.