在Silverlight项目中,当我尝试在单击按钮时向DataGrid添加新对象时,我遇到此异常。 在DomainService类中.. 我知道我必须为我正在推出的新实体实现Add操作,但是我该怎么做呢? 我的意思是我做了类,get方法,但是如何进行插入操作,我无法在this.ObjectContext中看到我的类,所以我要添加这个新对象,我有下一段代码:
public partial class SisPer
{
[Key]
public int Id { get; set; }
public string Nombre_Sistema { get; set; }
public string Nombre_Perfil { get; set; }
public string Nivel { get; set; }
public bool Estatus { get; set; }
}
public IQueryable<SisPer> Get_SisPer()
{
var query =
from per in this.ObjectContext.Cat_Perfil
join sis in this.ObjectContext.Cat_Sistema
on per.Cat_Sistema.Id equals sis.Id
select new SisPer()
{
Id = per.Id,
Nombre_Sistema = sis.Nombre,
Nombre_Perfil = per.Nombre,
Nivel = per.Nivel,
Estatus = per.Estatus
};
return query;
}
public void InsertSisPer(SisPer sisper)
{
?? I can't see this.ObjectContext.AddToSisPer();
}
Plz帮助!!
答案 0 :(得分:2)
您需要查看演示模型。是否有充分的理由将两个表结合起来?它通过暴露两个表来增加许多你可以避免的工作。如果您不希望客户端上有某些属性可用,则可以在它们上使用ExcludeAttribute。
http://blogs.msdn.com/deepm/archive/2009/11/20/wcf-ria-services-presentation-model-explained.aspx
答案 1 :(得分:0)
正确,你不会看到this.ObjectContext.AddToSisPer
。但是您的ObjectContext公开了EntitySet<SisPer> SisPers
。每当您调用ObjectSet.Sispers.Add(SisPer sisper)
时,只要您遵循Domain Services中描述的约定,就会自动调用您的插入操作。例如。使用Insert-,Add-或Create为插入操作添加前缀,使用[Insert]属性对其进行修饰,传入SisPer实体,然后返回void。