Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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# 对多个表使用实体框架时数据读取器类型不兼容_C#_Entity Framework - Fatal编程技术网

C# 对多个表使用实体框架时数据读取器类型不兼容

C# 对多个表使用实体框架时数据读取器类型不兼容,c#,entity-framework,C#,Entity Framework,在我的模型中,我遇到以下错误: 数据读取器与指定的“RMA.DAL.RMAs”不兼容。类型的成员, “Notes”在数据读取器中没有同名的对应列 我使用的是模型视图控制器3。代码文件如下: RMAModel.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; using RMA.DAL

在我的模型中,我遇到以下错误:

数据读取器与指定的“RMA.DAL.RMAs”不兼容。类型的成员, “Notes”在数据读取器中没有同名的对应列

我使用的是模型视图控制器3。代码文件如下:

RMAModel.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using RMA.DAL;
using System.Collections;

namespace RMA.Models
{
    public class RMAs
    {
        [Key]
        public int RMANumber { get; set; }
        public int OrderNumber { get; set; }
        public string Status { get; set; }
        public int CartID { get; set; }
        public DateTime DateIssued { get; set; }
        public DateTime OrderDate { get; set; }
        public string Name { get; set; }
        public string SKU { get; set; }
        public int QuantityAuthorized { get; set; }
        //to allow Nullable
        public int? SourceOrderNumber { get; set; }

        //For Notes
        public string Notes { get; set; }

        private DBContext_Model db = new DBContext_Model();

        public IEnumerable all()
        {
            string query = @"  SELECT DISTINCT r.RMAnumber,r.OrderNumber,r.Status,O.CartID,r.DateIssued,O.OrderDate,O.Name,oDetails.SKU,details.QuantityAuthorized,O.SourceOrderNumber,PO.PONumber
                                FROM RMAs r
                                INNER JOIN RMADetails details ON r.RMAnumber = details.RMAnumber
                                INNER  JOIN  Orders O ON O.OrderNumber = R.OrderNumber 
                                INNER  JOIN [Order Details] oDetails on O.OrderNumber = oDetails.OrderNumber
                                INNER JOIN Notes n on n.NumericKey = O.OrderNumber
                                INNER JOIN PurchaseOrders PO ON PO.OrderNumber = O.OrderNumber
                                INNER JOIN PurchaseOrderDetails PODetails ON PODetails.PONumber = PO.PONumber
                            ";
            var items = db.RMAs.SqlQuery(query);
            return items.ToList();
        }

        public IEnumerable single(int RMANumber, int OrderNumber)
        {
            string query = @"  SELECT DISTINCT r.RMAnumber,r.OrderNumber,r.Status,O.CartID,r.DateIssued,O.OrderDate,O.Name,oDetails.SKU,details.QuantityAuthorized,O.SourceOrderNumber,PO.PONumber
                                FROM RMAs r
                                INNER JOIN RMADetails details ON r.RMAnumber = details.RMAnumber
                                INNER  JOIN  Orders O ON O.OrderNumber = R.OrderNumber 
                                INNER  JOIN [Order Details] oDetails on O.OrderNumber = oDetails.OrderNumber
                                INNER JOIN Notes n on n.NumericKey = O.OrderNumber
                                INNER JOIN PurchaseOrders PO ON PO.OrderNumber = O.OrderNumber
                                INNER JOIN PurchaseOrderDetails PODetails ON PODetails.PONumber = PO.PONumber
                                AND O.OrderNumber = " + OrderNumber + " AND r.RMAnumber = " + RMANumber;
            var items = db.RMAs.SqlQuery(query);
            return items.ToList();
        }

        public IEnumerable getNotesByOrder(int OrderNumber)
        {
            string query = "Select * FROM Notes WHERE NumericKey = " + OrderNumber;
            var notes = db.Notes.SqlQuery(query);
            return notes.ToList();
        }
    }
}
using System.Data.Entity; 
using RMA.Models;

namespace RMA.DAL
{
    public class DBContext_Model:DbContext
    {
        public DbSet<RMAs> RMAs { get; set; }
        public DbSet<RMADetails> RMADetails { get; set; }
        public DbSet<Note> Notes { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using RMA.Models;
using System.Collections;

namespace RMA.Controllers
{
    public class DetailsController : Controller
    {
        public ActionResult Index(int id, int orderid)
        {
            RMAs modelRMA = new RMAs();
            IEnumerable singleRMA = modelRMA.single(id,orderid);
            IEnumerable notes = modelRMA.getNotesByOrder(orderid);
            ViewBag.notes = notes;
            return View(singleRMA);
        }

    }
}
DAL/DBContextModel.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using RMA.DAL;
using System.Collections;

namespace RMA.Models
{
    public class RMAs
    {
        [Key]
        public int RMANumber { get; set; }
        public int OrderNumber { get; set; }
        public string Status { get; set; }
        public int CartID { get; set; }
        public DateTime DateIssued { get; set; }
        public DateTime OrderDate { get; set; }
        public string Name { get; set; }
        public string SKU { get; set; }
        public int QuantityAuthorized { get; set; }
        //to allow Nullable
        public int? SourceOrderNumber { get; set; }

        //For Notes
        public string Notes { get; set; }

        private DBContext_Model db = new DBContext_Model();

        public IEnumerable all()
        {
            string query = @"  SELECT DISTINCT r.RMAnumber,r.OrderNumber,r.Status,O.CartID,r.DateIssued,O.OrderDate,O.Name,oDetails.SKU,details.QuantityAuthorized,O.SourceOrderNumber,PO.PONumber
                                FROM RMAs r
                                INNER JOIN RMADetails details ON r.RMAnumber = details.RMAnumber
                                INNER  JOIN  Orders O ON O.OrderNumber = R.OrderNumber 
                                INNER  JOIN [Order Details] oDetails on O.OrderNumber = oDetails.OrderNumber
                                INNER JOIN Notes n on n.NumericKey = O.OrderNumber
                                INNER JOIN PurchaseOrders PO ON PO.OrderNumber = O.OrderNumber
                                INNER JOIN PurchaseOrderDetails PODetails ON PODetails.PONumber = PO.PONumber
                            ";
            var items = db.RMAs.SqlQuery(query);
            return items.ToList();
        }

        public IEnumerable single(int RMANumber, int OrderNumber)
        {
            string query = @"  SELECT DISTINCT r.RMAnumber,r.OrderNumber,r.Status,O.CartID,r.DateIssued,O.OrderDate,O.Name,oDetails.SKU,details.QuantityAuthorized,O.SourceOrderNumber,PO.PONumber
                                FROM RMAs r
                                INNER JOIN RMADetails details ON r.RMAnumber = details.RMAnumber
                                INNER  JOIN  Orders O ON O.OrderNumber = R.OrderNumber 
                                INNER  JOIN [Order Details] oDetails on O.OrderNumber = oDetails.OrderNumber
                                INNER JOIN Notes n on n.NumericKey = O.OrderNumber
                                INNER JOIN PurchaseOrders PO ON PO.OrderNumber = O.OrderNumber
                                INNER JOIN PurchaseOrderDetails PODetails ON PODetails.PONumber = PO.PONumber
                                AND O.OrderNumber = " + OrderNumber + " AND r.RMAnumber = " + RMANumber;
            var items = db.RMAs.SqlQuery(query);
            return items.ToList();
        }

        public IEnumerable getNotesByOrder(int OrderNumber)
        {
            string query = "Select * FROM Notes WHERE NumericKey = " + OrderNumber;
            var notes = db.Notes.SqlQuery(query);
            return notes.ToList();
        }
    }
}
using System.Data.Entity; 
using RMA.Models;

namespace RMA.DAL
{
    public class DBContext_Model:DbContext
    {
        public DbSet<RMAs> RMAs { get; set; }
        public DbSet<RMADetails> RMADetails { get; set; }
        public DbSet<Note> Notes { get; set; }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using RMA.Models;
using System.Collections;

namespace RMA.Controllers
{
    public class DetailsController : Controller
    {
        public ActionResult Index(int id, int orderid)
        {
            RMAs modelRMA = new RMAs();
            IEnumerable singleRMA = modelRMA.single(id,orderid);
            IEnumerable notes = modelRMA.getNotesByOrder(orderid);
            ViewBag.notes = notes;
            return View(singleRMA);
        }

    }
}
index.cshtml

@model IEnumerable<RMA.Models.RMAs>

@{
    ViewBag.Title = "Details Page";
}
<style>
    #overview
    {
        width: 100%;
        height:40%;
    }
    div > table
    {
        width:100%;
    }
    #notes
    {
        margin-top:2%;
    }
    .left
    {
        width:40%;
        margin-top:5%;
        background-color:Blue;
        color:White;
    }
</style>
<h4>Summary</h4>
<div id=overview>
    <table>
        <tr>
            <th>Order #</th>
            <th>RMA #</th>
            <th>RMA Status</th>
            <th>Market Place ID</th>
            <th>RMA Issue Date</th>
            <th>Order Date</th>
            <th>Cust Ship To Name</th>
            <th>Local Sku</th>
            <th>RMA Qty</th>
            <th>Marketplace Order #</th>
        </tr>
         @foreach (RMA.Models.RMAs i in Model)
        {
            //<span>@i.OrderNumber</span>
            <tr>
                <td>@i.OrderNumber</td>
                <td>@i.RMANumber</td>
                <td>@i.Status</td>
                <td>@i.CartID</td>
                <td>@i.DateIssued</td>
                <td>@i.OrderDate</td>
                <td>@i.Name</td>
                <td>@i.SKU</td>
                <td>@i.QuantityAuthorized</td>
                <td>@i.SourceOrderNumber</td>
            </tr>
        }
    </table>
</div>
<h4>Notes</h4>
<div id=notes>
    <table>
        <tr>
            <th>Notes</th>
            <th>Date</th>
            <th>Time</th>

        </tr>
        @foreach (IEnumerable<RMA.Models.RMAs> note in @ViewBag.notes)
        {
        <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        }
    </table>
</div>
<div class=left>
    My Reason Goes here
</div>
<div class=left>
    Shipping Info
</div>
<div class=left>
    Billing Info
</div>
@model IEnumerable
@{
ViewBag.Title=“详细信息页面”;
}
#概述
{
宽度:100%;
身高:40%;
}
div>表格
{
宽度:100%;
}
#注释
{
利润率最高:2%;
}
左边
{
宽度:40%;
利润率最高:5%;
背景颜色:蓝色;
颜色:白色;
}
总结
命令#
军事革命#
军事革命状态
市场ID
军事革命发布日期
订购日期
客户发货至名称
本地Sku
RMA数量
市场秩序#
@foreach(模型中的RMA.Models.RMAs i)
{
//@i、 订单号
@i、 订单号
@i、 数字
@i、 地位
@i、 卡蒂德
@i、 发布日期
@i、 订单日期
@i、 名字
@i、 SKU
@i、 授权数量
@i、 SourceOrderNumber
}
笔记
笔记
日期
时间
@foreach(IEnumerable note in@ViewBag.notes)
{
}
我的理由就在这里
运输信息
账单信息

我想知道如何在MyView上注释表数据。

为什么这些查询字符串,为什么没有LINQ语句?我是asp.net/mvc3新手,我不知道LINQ什么时候学习LINQ应该是你的首要任务!在接下来的几天里,你什么也不做,只做那件事。它将为您提供有史以来最高的投资回报率。没有LINQ的实体框架就像没有汽油的汽车。这不是解决方案。您的意思是EF不能在没有LINQ的情况下工作,而它可以。无论如何,谢谢你的时间当然这不是一个直接的解决办法,但你真的不应该继续这样下去。那只是一个真诚的建议。错误的原因是
选择
列表与RMAs属性不匹配,
注释
不在其中。但是帮自己一个大忙,试着通过写LINQ来解决它。