我有2个项目。一个数据项目,包含我的数据库和我的实体框架模型。我有一个名为'User'的表,然后为用户生成了一个EF类。
我正在尝试添加部分类:
using System;
using System.Collections.Generic;
using System.Data.Linq;
using System.Linq;
using System.Text;
namespace Data
{
public partial class user
{
public bool isValid
{
get {
return (GetRuleViolations().Count()==0);
}
}
public IEnumerable<RuleViolation> GetRuleViolations()
{
yield break;
}
partialvoid OnValidate(ChangeAction action)
{
if (isValid)
throw new ApplicationException("Rule violation prevents saving");
}
}
public class RuleViolation
{
public string ErrorMessage { get; private set; }
public string PropertyName { get; private set; }
public RuleViolation (string errorMessage)
{
ErrorMessage = errorMessage;
}
public RuleViolation(string errorMessage, string propertyName)
{
ErrorMessage = errorMessage;
PropertyName = propertyName;
}
}
}
这是遵循MVC 1.0 NerdDinner示例。但是,我在OnValidate方法上遇到了设计时错误:
partial void OnValidate(ChangeAction action)
{
if (isValid)
throw new ApplicationException("Rule violation prevents saving");
}
没有找到声明部分方法声明的定义声明'void OnValidate(ChangeAction action)'
我做错了什么?
答案 0 :(得分:0)
应该有另一个文件包含用户类的其余部分。
在此文件中,您必须声明可能存在名为OnValidate的部分方法。
public partial class user
{
partial void OnValidate(ChangeAction action);
}
一些细节: 部分方法需要在某处指定签名。一旦定义了签名,就可以指定可选的实现。请阅读http://msdn.microsoft.com/en-us/library/wa80x488.aspx以获取更多信息。