diff --git a/OpenAuth.App/OrgManagerApp.cs b/OpenAuth.App/OrgManagerApp.cs
index 337cb082..7b5562af 100644
--- a/OpenAuth.App/OrgManagerApp.cs
+++ b/OpenAuth.App/OrgManagerApp.cs
@@ -43,6 +43,8 @@ namespace OpenAuth.App
UnitWork.Update(a);
}
+ UnitWork.Save();
+
return org.Id;
}
diff --git a/OpenAuth.Mvc/Controllers/OrgManagerController.cs b/OpenAuth.Mvc/Controllers/OrgManagerController.cs
index 14066c4f..cd69f213 100644
--- a/OpenAuth.Mvc/Controllers/OrgManagerController.cs
+++ b/OpenAuth.Mvc/Controllers/OrgManagerController.cs
@@ -18,13 +18,7 @@ namespace OpenAuth.Mvc.Controllers
{
return View();
}
- public ActionResult Assign(string firstId, string key)
- {
- ViewBag.FirstId = firstId;
- ViewBag.ModuleType = key;
- return View();
- }
-
+
public string LoadForUser(string firstId)
{
var orgs = OrgApp.LoadForUser(firstId);
@@ -72,7 +66,6 @@ namespace OpenAuth.Mvc.Controllers
///
/// 删除指定ID的组织
- /// Id为逗号分开的字符串
///
/// System.String.
[HttpPost]
diff --git a/OpenAuth.Mvc/Controllers/UserSessionController.cs b/OpenAuth.Mvc/Controllers/UserSessionController.cs
index 1c1a2e72..c0b71eee 100644
--- a/OpenAuth.Mvc/Controllers/UserSessionController.cs
+++ b/OpenAuth.Mvc/Controllers/UserSessionController.cs
@@ -78,7 +78,13 @@ namespace OpenAuth.Mvc.Controllers
{
var org = user.Orgs.SingleOrDefault(u => u.Id == orgId);
if (org == null)
- throw new Exception("未能找到指定对象信息");
+ {
+ return JsonHelper.Instance.Serialize(new TableData
+ {
+ msg ="未找到指定的节点",
+ code = 500,
+ });
+ }
cascadeId = org.CascadeId;
}
diff --git a/OpenAuth.Repository/BaseRepository.cs b/OpenAuth.Repository/BaseRepository.cs
index e65a493d..ba2ee536 100644
--- a/OpenAuth.Repository/BaseRepository.cs
+++ b/OpenAuth.Repository/BaseRepository.cs
@@ -145,7 +145,7 @@ namespace OpenAuth.Repository
private IQueryable Filter(Expression> exp)
{
- var dbSet = Context.Set().AsQueryable();
+ var dbSet = Context.Set().AsNoTracking().AsQueryable();
if (exp != null)
dbSet = dbSet.Where(exp);
return dbSet;
diff --git a/OpenAuth.Repository/OpenAuthDBContext.cs b/OpenAuth.Repository/OpenAuthDBContext.cs
index ea89daca..b8966a61 100644
--- a/OpenAuth.Repository/OpenAuthDBContext.cs
+++ b/OpenAuth.Repository/OpenAuthDBContext.cs
@@ -8,6 +8,7 @@
//------------------------------------------------------------------------------
using System.Data.Entity;
+using System.Data.Entity.Infrastructure;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Mapping;
@@ -25,6 +26,11 @@ namespace OpenAuth.Repository
{
// 关闭语义可空判断
Configuration.UseDatabaseNullSemantics = true;
+
+ //与变量的值为null比较
+ //ef判断为null的时候,不能用变量比较:https://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa
+ (this as IObjectContextAdapter).ObjectContext.ContextOptions.UseCSharpNullComparisonBehavior = true;
+ Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
}
public OpenAuthDBContext(string nameOrConnectionString)
diff --git a/OpenAuth.Repository/UnitWork.cs b/OpenAuth.Repository/UnitWork.cs
index 1c48bef6..581841df 100644
--- a/OpenAuth.Repository/UnitWork.cs
+++ b/OpenAuth.Repository/UnitWork.cs
@@ -85,9 +85,14 @@ namespace OpenAuth.Repository
public void Update(T entity) where T:class
{
var entry = this.Context.Entry(entity);
- //todo:如果状态没有任何更改,会报错
entry.State = EntityState.Modified;
+ //如果数据没有发生变化
+ if (!this.Context.ChangeTracker.HasChanges())
+ {
+ entry.State = EntityState.Unchanged;
+ }
+
}
public void Delete(T entity) where T:class
@@ -136,7 +141,7 @@ namespace OpenAuth.Repository
private IQueryable Filter(Expression> exp) where T : class
{
- var dbSet = Context.Set().AsQueryable();
+ var dbSet = Context.Set().AsNoTracking().AsQueryable();
if (exp != null)
dbSet = dbSet.Where(exp);
return dbSet;
diff --git a/OpenAuth.UnitTest/TestOrg.cs b/OpenAuth.UnitTest/TestOrg.cs
index e1f6e7f0..d9ac8cf8 100644
--- a/OpenAuth.UnitTest/TestOrg.cs
+++ b/OpenAuth.UnitTest/TestOrg.cs
@@ -23,7 +23,7 @@ namespace OpenAuth.UnitTest
{
try
{
- for (int i = 0; i < 2; i++)
+ for (int i = 0; i < 5; i++)
{
var random = new Random();
int val = random.Next();
@@ -43,5 +43,17 @@ namespace OpenAuth.UnitTest
Console.WriteLine(e.Message);
}
}
+
+
+ [TestMethod]
+ public void update()
+ {
+ _app.Update(new Org
+ {
+ Id = "4bcdd85d-662f-42e4-94dc-19e3e98ef4dc",
+ Name = "测试",
+ ParentId = "57239263-0176-4ef9-a4b5-3491a04e2c6a"
+ });
+ }
}
}