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

时间:2014-06-18 17:22:42

标签: 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;
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();
        }
    }
}

DAL / DBContextModel.cs

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; }
    }
}

DetailsController.cs

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>

我想了解Notes如何在MyView上显示数据。

0 个答案:

没有答案
相关问题