【问题标题】:Select multiple tables using Linq to SQL使用 Linq to SQL 选择多个表
【发布时间】:2011-04-20 20:29:55
【问题描述】:

我正在尝试使用 Linq To Sql 将两个不同表中的列绑定到 gridview

这里是绑定:

var q = (来自 mail.tblmails 中的 o
在 o.staffId 上的 mail.tblstaffs 中加入 c 等于 c.id
选择新的 { o, c });
返回视图(q);

这是我在视图中调用绑定的地方。

.Columns(列 => {

       columns.Bound(o => o.dateAdded).Format("{0:MM/dd/yyyy}").Width(80);
       columns.Bound(o => o.companyId);
       //columns.Bound(c => c.staffId);
       columns.Bound(o => o.subject);
       columns.Bound(o => o.dateArchived);

   })

我遇到了一个错误

异常详细信息:System.InvalidOperationException:传入字典的模型项的类型为 'System.Data.Linq.DataQuery1[<>f__AnonymousType06[System.Nullable1[System.DateTime],System.Nullable1[System.Int32],System.String, System.Nullable1[System.DateTime],System.String,System.Int32]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[ffs.Models.tblmail]'。

我感觉问题可能与线路有关

"%>

但我不知道该怎么做才能修复它。

我正在使用 Telerik 网格扩展。

任何帮助都会很棒,谢谢。

【问题讨论】:

    标签: asp.net-mvc linq-to-sql telerik


    【解决方案1】:

    您现在正在做的(也做错了)是将查询数据直接发送到视图。这被认为是不好的做法。虽然可以访问生成的匿名类型,但此方法会导致在视图期间而不是在控制器中进行数据访问。

    我建议您创建一个模型(类)来表示数据并将这些实体(您的模型)的列表返回给视图,使用:

    <% Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<List<yourCreatedModelClass>>"%>
    

    注意你告诉视图的部分,你正在向它传递你的对象列表,而不仅仅是一个干净的视图。

    讨论了一些相关的问题和解决方案here

    【讨论】:

      【解决方案2】:

      我认为问题(查看您的错误消息)在于您尝试传递匿名类型,而视图期待 IEnumerable&lt;tblmail&gt;

      您要做的是创建一个数据结构,例如:

      public class Model
      {
         public tblmails Mails { get; set; }
         public tblstaff Staff { get; set; }
      }
      

      然后在您的 linq 查询中,您会将 o 放入 Model.Mails,然后将 c 放入 Model.Staff。然后,您将 IEnumerable&lt;Model&gt; 结果传递到您的视图中,并将您的视图连接起来,以便将 IEnumerable&lt;Model&gt; 作为模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多