0
我正在使用'wcf數據服務工具包'進行CURD操作。 獲取/添加/刪除工作正常,但更新失敗。更新無法在wcf dataservice工具包中工作
在更新的情況下,我看到'GetOne()'方法被調用,但Save()不會被調用。
服務代碼:
public class UserService : ODataService<UserContext>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
庫編號:
public User GetOne(string id)
{
return _session.Query<User>().Where(a => a.Id == int.Parse(id)).SingleOrDefault();
}
public void Save(User u)
{
_session.Store(u);
_session.SaveChanges();
}
數據上下文代碼:
public class UserContext : ODataContext
{
public IQueryable<User> Users
{
get { return base.CreateQuery<User>(); }
}
public override object RepositoryFor(string fullTypeName)
{
return new UserRepository();
}
}
型號代碼:
[DataServiceKey("Id")]
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string UserEmailAddress { get; set; }
}
這裏是我的測試案例:
[TestMethod]
public void TestUpdateUser()
{
var context = new UserService.UserContext(new Uri("http://localhost:59050/UserService.svc"));
var user = context.Users.Where(a => a.Id == 385).SingleOrDefault();
user.UserEmailAddress = "[email protected]";
context.UpdateObject(user);
context.SaveChanges();
var context2 = new UserService.UserContext(new Uri("http://localhost:59050/UserService.svc"));
var updated = context.Users.Where(a => a.Id == 385).SingleOrDefault();
Assert.AreEqual("[email protected]", updated.UserEmailAddress)
}
我更新我的模型代碼的問題。此外,日誌問題僅針對根網址,其餘服務工作爲獲取/添加/刪除(除更新)。 – NiTiN
您的項目中是否包含工具包代碼?如果是這樣,在ODataContext文件中放置一個斷點。該文件包含一個名爲SaveChanges的方法,您將能夠看到它正在嘗試執行的操作。另外請確保您使用的是http://wcfdstoolkit.codeplex.com/SourceControl/network/Forks/Airslash/SeptemberRelease這個版本的代碼,因爲這裏有幾個修正。 – SCB
我正在使用nuget包。將嘗試代碼並讓你知道,謝謝! – NiTiN