MVC,Views和System.Data.Entity

时间:2013-03-07 23:08:23

标签: c# asp.net-mvc entity-framework

我有一个存储库项目,已添加到我的MVC应用程序中。

在MVC Web App的C#代码中,我不得不添加对System.Data.Entity的引用,以便我可以从我的存储库访问对象。

如果我没有添加引用,则以下内容失败;

DataRepository<Store> repo = new DataRepository<Store>();
List<Store> allSorted = repo.All(x => x.name);

现在我想将该列表传递给我的Partial View,它位于FVM中,它是我传递给Partial View的FVM。

所以index.aspx代码;

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

<% Html.RenderPartial("StoreList", Model.StoreListFVM); %>

ASCX代码;

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<StoreListFVM>" %>

<%        
    SelectList storeList = new SelectList(Model.Stores.Select(x => new { Value = x.number, Text = x.name }),"Value","Text");
%>

<%= Html.DropDownList("SelectedStore", storeList) %>

但是,我收到错误通知我需要在ascx中包含对System.Data.Entity的引用。我不明白为什么。

我尝试将命名空间添加到web.config文件中,并尝试在ascx页面的顶部导入命名空间。

思想?

修改

  

\ nasfile02 \ Visual Studio   2010 \项目\ TOM \ TOM \视图\商店\ PartialViews \ StoreList.ascx(4):   错误CS0012:类型'System.Data.Objects.DataClasses.EntityObject'   在未引用的程序集中定义。你必须添加一个   对程序集'System.Data.Entity,Version = 4.0.0.0的引用,   Culture = neutral,PublicKeyToken = b77a5c561934e089'。

修改

namespace TOM.FormViewModels
{
    public class StoresFVM
    {
        public StoreListFVM StoreListFVM { get; set; }
    }
}

namespace TOM.FormViewModels
{
    public class StoreListFVM
    {
        public List<Store> Stores { get; set; }
    }
}

1 个答案:

答案 0 :(得分:17)

您应该确保web.config看起来如下:

<compilation debug="true" targetFramework="4.0">
  <assemblies>
    <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </assemblies>
</compilation>

也在https://stackoverflow.com/a/3611040/1737862

中描述