我有一個在C#中使用實體框架的簡單場景。我有一個實體帖子:C#實體框架:添加到上下文和saveChanges之間的數據驗證()
public class Post
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
在我PostManager我有以下方法:
public int AddPost(string name, string description)
{
var post = new Post() { Name = name, Description = description };
using (var db = new DbContext())
{
var res = db.Posts.Add(post);
res.Validate();
db.SaveChanges();
return res.Id;
}
}
public void UpdatePost(int postId, string newName, string newDescription)
{
using (var db = new DbContext())
{
var data = (from post in db.Posts.AsEnumerable()
where post.Id == postId
select post).FirstOrDefault();
data.Name = newName;
data.Description = newDescription;
data.Validate();
db.SaveChanges();
}
}
方法的validate()是指類:
public static class Validator
{
public static void Validate(this Post post)
{
if (// some control)
throw new someException();
}
我之前調用validate方法savechanges(),但在將對象添加到上下文之後。在這個簡單的場景中驗證數據的最佳做法是什麼?反而更好地驗證參數?如果在將對象添加到上下文之後驗證方法拋出異常,那麼對象後期會發生什麼情況?
UPDATE:
我不得不放棄取決於數據驗證錯誤的自定義設置例外。
我通常只使用數據註釋https://msdn.microsoft.com/en-us/library/dd901590(VS.95).aspx其中EF將「查找」;否則還有其他方法在運行時從您自己的代碼中調用它 – MickyD
@Micky嗨!在我的項目中,我必須在驗證數據時拋出customException。有可能使用數據註解做它? –
當然,請查看我的回答 – MickyD