首先,我要感谢大家的努力和投入。Stack Overflow 一直是我的首选资源,我觉得我在这个论坛上学到的东西比我在大学的整个 4 年学到的还要多!
那么问题来了。我有一个使用 EF 和 WCF RIA 的 Silverlight 4 项目。在我的一个页面中,我通过 Ria Web 服务调用检索表的内容并将结果存储在ObservableCollection<T>
银光代码:
//class variables;
public ObservableCollection<Data> DataSource { get; set; } //Data entity
public ApplicationDomainContext Context { get; set; } //Ria Service
...
EntityQuery<Data> query = this.Context.GetDatasQuery();
this.Context.Load(query, loadedCallBack =>
{
if( loadedCallBack.HasError )
{
loadedCallBack.MarkErrorAsHandled();
MessageBox.Show("Unable to retrieve the desired data...");
return;
}
this.DataSource = new ObservableCollection<Data>(loadedCallback.Entities);
}
...
private void CreateUserAction()
{
string userName = WebContext.Current.User.Name;
this.Context.CreateUserAction(userName, this.DataSource, callBack =>
{
if(callBack.HasError)
{
callBack.MarkErrorAsHandled();
MessageBox.Show("Error creating user action");
return;
}
}
}
服务代码:
public partial class ApplicationDomainService : LinqToEntitiesDomainService<ApplicationDomainModel>
{
[Invoke]
public void CreateUserAction(string userName, IEnumerable<Data> dataItems)
{
foreach(Data dataItem in dataItems)
{
if( dataItem.EntityState == EntityState.Detached )
{
this.ObjectContext.Attach(dataItem); //ERROR???
}
}
}
}
所以代码执行到内部if( dataItem.EntityState == EntityState.Detached)
并在我尝试附加对象时给我一个错误:
An object with a null EntityKey value cannot be attached to an object context.
有趣的是,我根本没有修改 Data 对象,它们确实带有一个 Id 和客户端上的所有其他内容。
如果有人能指出我做错的方向,我将不胜感激!!!
谢谢
Martin, aka <bleepzter/>