我有实体框架生成的以下类:
public partial class ItemRequest
{
public int RequestId { get; set; }
//...
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个必填字段
[Required]
public int RequestId { get;set; }
Run Code Online (Sandbox Code Playgroud)
但是,因为这是生成的代码,这将被消灭.我无法想象一种创建分部类的方法,因为属性是由生成的分部类定义的.如何以安全的方式定义约束?
我的解决方案中有3个项目:DataModel(EF),DAL,它与DataModel和MVC Web API的实体一起使用.
只有2个非常简单的实体:Person,Address,每个都有3个简单的字段,Person有Address字段(所以这2个实体是链接的)
在我的DAL中,我有一个方法可以返回所有Persons的列表,内容非常简单:return context.Person.ToList();
现在在我的Web API中,我只是调用GetPersons()方法并尝试返回它.在这里我得到一个奇怪的错误信息:
"发生了错误.","ExceptionMessage":"'ObjectContent`1'类型无法序列化内容类型'application/json; charset = utf-8'的响应主体.","ExceptionType":"系统. InvalidOperationException","StackTrace":null,"InnerException":{"$ id":"2","Message":"发生了错误.",...
当我调试时,我可以看到我确实拥有来自GetPersons方法的数据.我也googled并找到唯一的解决方案:我应该在我的启动配置中添加以下行:
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.
我还尝试手动填充列表而不使用数据库:在这种情况下它可以工作.
我有一种强烈的印象,它与EF有关,但我不确切知道那是什么.