实体框架数据库第一次属性验证

时间:2014-07-03 16:41:31

标签: asp.net-mvc entity-framework

我首先使用EF数据库并使用MVC。

我想在属性上添加一些验证以将其旧值与其新值进行比较,并在出现问题时向MVC ModelState报告验证错误。

首先使用代码并使用' set'进行验证会很容易。在物业上。但是我不能首先使用数据库,因为它是自动生成的。

我已经看过使用IValidatableObject和validate()方法,但是到那时候,属性上的值已经被更改,所以我再也看不到那个旧的了。

如果没有创建一种方法来将新值传递给第一个来检查它,我就无法想到另一种方式。

有什么建议吗?

由于

2 个答案:

答案 0 :(得分:0)

如果要将新值与旧值进行比较,那么您将不得不首先从数据库中获取值(在更新之前)并进行比较:

[HttpPost]
public ActionResult Update(MyObject myObject)
{
    var oldObject = db.Objects.FirstOrDefault(o => o.Id == myObject.Id);
    //Compare oldObject.Value to myObject.Value
}

您仍然可以使用IValidatebleObject并传入您需要的对象以将该逻辑保留在控制器之外。

答案 1 :(得分:0)

它不是理想的,这已经开始说明模型和数据库中的一些弱点,但这是我最终如何做到这一点。

我决定更改模型中的属性,以便set为private,然后在partial类中创建一个单独的方法来设置值。然后验证将在该方法中完成。

感谢您的帮助

相关问题