【发布时间】:2016-01-21 13:06:21
【问题描述】:
我有一个使用 C# 中的实体框架的简单场景。我有一个实体帖子:
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();
}
我在 savechanges() 之前调用 validate 方法,但在将对象添加到上下文之后。在这个简单的场景中验证数据的最佳实践是什么?最好验证论点吗?如果 validate 方法在将对象添加到上下文后抛出异常,对象 post 会发生什么?
更新:
我必须根据数据验证错误抛出一组自定义异常。
【问题讨论】:
-
我通常只使用数据注释msdn.microsoft.com/en-us/library/dd901590(VS.95).aspx EF 将“寻找它”;否则还有其他方法可以在运行时从您自己的代码中调用它
-
@Micky 你好!在我的项目中,当我验证数据时,我必须抛出 customException。可以使用数据注释来做到这一点吗?
-
没问题,看看我下面的答案
标签: c# entity-framework validation