我有时会在 SL5 + EF + WCF 应用程序上收到此 Web 服务错误。
“域操作条目‘AddUserPresentationModelToRole’的参数‘角色’必须是预定义的可序列化类型之一。”
这是一个类似的错误,但是他的解决方案对我不起作用。
我有代码生成的 DomainService ,它将数据库实体呈现给我的客户:
[EnableClientAccess()]
public partial class ClientAppDomainService : LinqToEntitiesDomainService<ClientAppUserEntitlementReviewEntities>
{
public IQueryable<Account> GetAccounts()
{
return this.ObjectContext.Accounts;
}
//..etc...
和我的自定义服务,它显示了一个演示模型和数据库实体。
[EnableClientAccess]
[LinqToEntitiesDomainServiceDescriptionProvider(typeof(ClientAppUserEntitlementReviewEntities))]
public class UserColourService : DomainService
{
[Update(UsingCustomMethod = true)]
public void AddUserPresentationModelToRole(UserPresentationModel userPM, Role role, Reviewer reviewer)
{
...
}
public IDictionary<long, byte> GetColourStatesOfUsers(IEnumerable<RBSUser> listOfUsers, string adLogin)
{
//....
}
}
和 PresentationModel:
public class UserPresentationModel
{
[Key]
public long UserID { get; set; }
public byte UserStatusColour { get; set; }
public string MessageText { get; set; }
[Include]
[Association("asdf", "UserID", "UserID")]
public EntityCollection<Account> Accounts { get; set; }
public DateTime AddedDate { get; set; }
public Nullable<long> CostCentreID { get; set; }
public DateTime? DeletedDate { get; set; }
public string EmailAddress { get; set; }
public long EmployeeID { get; set; }
public string FirstName { get; set; }
public Nullable<bool> IsLeaver { get; set; }
public string LastName { get; set; }
public DateTime LastSeenDate { get; set; }
public string LoginDomain { get; set; }
public string LoginName { get; set; }
public byte WorldBuilderStatusID { get; set; }
}
也无法获得可靠失败的解决方案。似乎每当我稍微更改服务时,即重新编译它,一切正常。
手工构建的 DomainService 上的 RIAServices 不受支持的类型 - 似乎在说同样的事情,用 LinqToEntitiesDomainServiceDescriptionProvider 装饰手工构建的服务应该可以工作。