AttachAll异常:无法根据用法推断方法的类型参数。尝试明确指定类型参数
问题描述:
场景: 尝试在我的LinqToSql DataContext对象的表上调用.AttachAll
方法。AttachAll异常:无法根据用法推断方法的类型参数。尝试明确指定类型参数
下面是有关简化片断:
public void Update(Customer cust){
MyDataContext db = new MyDataContext();
db.CustomerInvoices.AttachAll(cust.Invoices); //exception raised here!
db.Customer.Attach(cust);
}
异常由编译器提出:
的类型参数方法 “System.Data.Linq.Table(发票) .AttachAll(TSubEntity)(System.Collections.Generic.IEnumerable(TSubEntity))' 无法根据用法推断。尝试 显式指定类型参数 。
问题:什么是正确投射集合的正确方法?除了演员以外的其他解决方案?
答
如果cust.Invoices已经引用CustomerInvoices表的实例,只是做 db.Customers.Attach(cust); db.Update();应该是你需要做的一切。
如果CustomerInvoices与Customer.Invoice的类型不同,那么您可能需要遍历集合并对每个集合进行投射。
答
public string Save(Role objRole)
{
string message = string.Empty;
System.Data.Common.DbTransaction trans = null;
try
{
Objdb.Connection.Open();
trans = Objdb.Connection.BeginTransaction();
Objdb.Transaction = trans;
if (objRole.RoleId == 0)
{
Objdb.Roles.InsertOnSubmit(objRole);
}
else
{
Objdb.Roles.Attach(objRole, true);
Objdb.RolePages.AttachAll(objRole.RolePages.Where(a => a.IsNew == false && a.IsDeleted == false), true);
Objdb.RolePages.InsertAllOnSubmit(objRole.RolePages.Where(a => a.IsNew == true && a.IsDeleted == false));
Objdb.RolePages.DeleteAllOnSubmit(objRole.RolePages.Where(a => a.IsNew == false && a.IsDeleted == true));
}
Objdb.SubmitChanges();
trans.Commit();
message = "Record saved successfully.";
}
catch (Exception ex)
{
trans.Rollback();
message = "Error : " + ex.Message;
}
return message;
}
答
else if (((CheckBox)item.Cells[2].FindControl("ckbSelect")).Checked == true && ((Label)item.Cells[2].FindControl("lblIsInuse")).Text == "1")
{
RolePage objTemp = new RolePage();
objTemp = new Helper().GetRolePagebyID(roleId, Convert.ToInt32(item.Cells[0].Text));
rp.RoleId = objTemp.RoleId;
rp.PageId = objTemp.PageId;
rp.RolePageId = objTemp.RolePageId;
rp.CreatedOn = objTemp.CreatedOn;
rp.Timestamp = objTemp.Timestamp;
//rp.RoleId = roleId;
//rp.PageId = Convert.ToInt32(item.Cells[0].Text);
//rp.RolePageId =Convert.ToInt32(((Label)item.Cells[2].FindControl("lblRolePageId")).Text.Trim());
rp.IsNew = false;
rp.IsDeleted = false;
rp.UpdatedOn = DateTime.Now;
erp.Add(rp);
}
什么是cust.Invoices? IEnumerable? –
Zyphrax
2009-07-14 18:04:10