Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 列ID在规范中多次出现_C#_Asp.net Mvc 3_Entity Framework 4 - Fatal编程技术网

C# 列ID在规范中多次出现

C# 列ID在规范中多次出现,c#,asp.net-mvc-3,entity-framework-4,C#,Asp.net Mvc 3,Entity Framework 4,最近,我再次拿起我的EF4.1/MVC 3项目,开始构建实际的前端功能 现在,我正在开发一个“简单”的消息系统,但在进入该页面时,我得到了标题中所述的错误 编辑 它创建的是数据库,而不是模型 堆栈跟踪: [NullReferenceException:对象引用未设置为 对象。]ASP.\u页面\u视图\u收件箱\u索引\u cshtml.Execute()位于 c:\Development\MVC\DOCCL\Views\Inbox\Index.cshtml:18 System.Web.WebP

最近,我再次拿起我的EF4.1/MVC 3项目,开始构建实际的前端功能

现在,我正在开发一个“简单”的消息系统,但在进入该页面时,我得到了标题中所述的错误

编辑

它创建的是数据库,而不是模型

堆栈跟踪:

[NullReferenceException:对象引用未设置为 对象。]ASP.\u页面\u视图\u收件箱\u索引\u cshtml.Execute()位于 c:\Development\MVC\DOCCL\Views\Inbox\Index.cshtml:18
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()+197
System.Web.Mvc.WebViewPage.ExecutePageHierarchy()+81
System.Web.WebPages.StartPage.RunPage()+17
System.Web.WebPages.StartPage.ExecutePageHierarchy()+62
System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext、TextWriter编写器、WebPageUnderingBase起始页)+76
System.Web.Mvc.RazorView.RenderView(ViewContext, TextWriter编写器,对象实例)+222
System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext,TextWriter)+115
System.Web.Mvc.ViewResultBase.ExecuteSult(ControllerContext上下文) +295 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext,ActionResult ActionResult)+13
System.Web.Mvc.c_DisplayClass1c.b_19() +23 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter 过滤器,结果执行上下文预文本,Func
1 continuation)+242
System.Web.Mvc.c__DisplayClass1e.b__1b() +21 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext,IList
1过滤器,ActionResult ActionResult)+177
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext,字符串actionName)+324
System.Web.Mvc.Controller.ExecuteCore()+106
System.Web.Mvc.ControllerBase.Execute(RequestContext-RequestContext) +91 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(请求上下文 请求上下文)+10
System.Web.Mvc.c_DisplayClassb.b_5()+34
System.Web.Mvc.Async.c_DisplayClass1.b_0()+19
System.Web.Mvc.Async.c\u DisplayClass8
1.b\u 7(IAsyncResult
_)+10 System.Web.Mvc.Async.WrappedAsyncResult
1.End()+62 System.Web.Mvc.c_DisplayClasse.b_d()+48
System.Web.Mvc.SecurityUtil.b_0(操作f)+7 System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(操作) +22 System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)+60
System.Web.Mvc.MvcHandler.System.Web.IHTTPassynchandler.EndProcessRequest(IAsyncResult 结果)+9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9478661 System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)+178

内部异常: {“列ID在规范中出现了多次。”}

最近添加的代码是

控制器:

//
// GET: /Inbox/Index/5/1
public ActionResult Index(int? Id, int Page = 1)
{
    try
    {
        const int pageSize = 10;
        var messages = from m in horseTracker.Messages
                        where m.ReceiverId.Equals(Id)
                        select m;

        var paginatedMessages = new PaginatedList<Message>(messages, Page, pageSize);

        return View(paginatedMessages);
    }
    catch (Exception ex)
    {

    }
    return View();
}
//
//获取:/Inbox/Index/5/1
公共行动结果索引(int?Id,int Page=1)
{
尝试
{
常量int pageSize=10;
var消息=来自马跟踪器中的m。消息
其中,m.接收方等于(Id)
选择m;
var paginatedMessages=新的分页列表(消息、页面、页面大小);
返回视图(分页消息);
}
捕获(例外情况除外)
{
}
返回视图();
}
模型

public class Message
{
    [Key]
    public int Id { get; set; }

    [Required(ErrorMessage = "Subject is required")]
    [Display(Name = "Subject")]
    public string Subject { get; set; }

    [Required(ErrorMessage = "Message is required")]
    [Display(Name = "Message")]
    public string Content { get; set; }

    [Required]
    [Display(Name = "Date")]
    public DateTime Created { get; set; }

    public Boolean Read { get; set; }

    [Required(ErrorMessage = "Can't create a message without a user")]
    public int SenderId { get; set; }
    public virtual User Sender { get; set; }

    [Required(ErrorMessage = "Please pick a recipient")]
    public int ReceiverId { get; set; }
    public virtual User Receiver { get; set; }
}

public class User
{
    [Key]
    public int Id { get; set; }

    [Required]
    [Display(Name = "Username")]
    public string UserName { get; set; }

    [Required]
    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Required]
    [Display(Name = "Last Name")]
    public string LastName { get; set; }

    [Required]
    [Display(Name = "E-Mail")]
    public string Email { get; set; }

    [Required]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Required]
    [Display(Name = "Country")]
    public string Country { get; set; }

    public string EMail { get; set; }

    //Races
    public virtual ICollection<Message> Messages { get; set; }
}

modelBuilder.Entity<User>()
    .HasMany(u => u.Messages)
    .WithRequired(m => m.Receiver)
    .HasForeignKey(m => m.ReceiverId)
    .WillCascadeOnDelete(false);
公共类消息
{
[关键]
公共int Id{get;set;}
[必需(ErrorMessage=“主题是必需的”)]
[显示(Name=“Subject”)]
公共字符串主题{get;set;}
[必需(ErrorMessage=“Message is Required”)]
[显示(Name=“Message”)]
公共字符串内容{get;set;}
[必需]
[显示(Name=“日期”)]
已创建公共日期时间{get;set;}
公共布尔读取{get;set;}
[必需(ErrorMessage=“没有用户无法创建邮件”)]
public int SenderId{get;set;}
公共虚拟用户发送方{get;set;}
[必需(ErrorMessage=“请选择收件人”)]
public int ReceiverId{get;set;}
公共虚拟用户接收器{get;set;}
}
公共类用户
{
[关键]
公共int Id{get;set;}
[必需]
[显示(Name=“Username”)]
公共字符串用户名{get;set;}
[必需]
[显示(Name=“First Name”)]
公共字符串名{get;set;}
[必需]
[显示(Name=“Last Name”)]
公共字符串LastName{get;set;}
[必需]
[显示(Name=“电子邮件”)]
公共字符串电子邮件{get;set;}
[必需]
[显示(Name=“密码”)]
公共字符串密码{get;set;}
[必需]
[显示(Name=“Country”)]
公共字符串国家{get;set;}
公共字符串电子邮件{get;set;}
//比赛
公共虚拟ICollection消息{get;set;}
}
modelBuilder.Entity()
.HasMany(u=>u.Messages)
.WithRequired(m=>m.Receiver)
.HasForeignKey(m=>m.ReceiverId)
.WillCascadeOnDelete(假);
有人知道我为什么会犯那个错误吗?
在我添加这些类之前,它工作得很好。

在消息模型中,Id不可为null,但您的操作允许为null,EF无法在查询的where子句中匹配这两种类型并引发异常

显示可能的内部异常和堆栈跟踪可能会有所帮助。这是否有帮助:我发布了内部异常Slauma。至于那个话题,不,不是。我在不同的地方使用相同的技术,例如我有一个马类,它有一个坝和一个公马都是马的类型,他们根本不抱怨Id。我觉得很奇怪,就是这样,谢谢你。遇到了另一个问题,但这更进一步。我在用户模型中有两个电子邮件字段。一旦我移除了t