【发布时间】:2016-04-20 14:52:59
【问题描述】:
我的人物类:
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();
}
}
最后是我的 webform 代码隐藏在单击登录按钮后:
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 是自动递增的,所以我没有设置任何值。)
【问题讨论】:
-
看起来
AddUser()方法没有接受用户类型的参数。你检查过参数是什么吗? -
我调试了它,'userToAdd' obhect 保存了准确的输入值,所以应该没有问题,但我收到了这个错误@BarryO'Kane
-
userToAdd不是问题所在。将鼠标悬停在UserBusiness类的entity.PersonelTable.Add(userToAdd)行中的Add上,您应该会看到该方法采用的类型。我怀疑不是User。 -
哇,我现在明白了。 Personel.Add 将 (PersonelTable entity) 作为参数,但我正在发送一个用户对象。那么我该如何解决它。用户对象拥有正确的数据,所以有没有办法转换对象类型或其他东西?有什么建议么? @BarryO'Kane
-
@BatuhanOzdal 请不要忘记检查两个答案
标签: c# asp.net entity-framework oop singleton