实体框架基础
本文关键字:框架 实体 | 更新日期: 2023-09-27 18:08:30
在我的演示方案中,我有两个项目DataAccess和WebInterface。
在DataAccess项目中,我有一个EF用于用户和一个类文件UserDataAccessService.cs
UserDataAccessService.cs中的代码:-
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Entity;
using System.Data.EntityClient;
using System.Data.SqlClient;
using System.Data;
using DataAccess.User;
namespace DataAccess.User
{
public sealed class UserDataAccessService
{
private string efConnectionString;
private string portalConnectionString;
public string ConnectionString
{
get { return efConnectionString; }
}
public UserDataAccessService(string portalConnectionString)
{
this.portalConnectionString = portalConnectionString;
this.efConnectionString = GetConnectionString(portalConnectionString);
}
private string GetConnectionString(string portalConnectionString)
{
EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder();
entityBuilder.Provider = "System.Data.SqlClient";
entityBuilder.ProviderConnectionString = portalConnectionString;
entityBuilder.Metadata = "res://*/User.ProgramModel.csdl|res://*/User.UserModel.ssdl|res://*/User.UserModel.msl";
return entityBuilder.ToString();
}
public IEnumerable<User> GetUsers(int? userId, bool? status)
{
using (Users objectContext = new Users(efConnectionString))
{
return objectContext.GetUsers(null, null);
}
}
}
}
现在在WebInterface项目中,我只有一个ManageUsers。aspx页面上,我试图通过下面的代码获取用户列表
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using DataAccess.User;
namespace WebInterface
{
public partial class ManageUser : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
UserDataAccessService usrObj = new UserDataAccessService(ConfigurationManager.ConnectionStrings["portalConn"].ToString());
List<User> userLst = new List<User>();
userLst = usrObj.GetUsers(1, null).ToList();
}
}
}
问题:-当我正在构建解决方案,然后我得到下面的错误:-
Error 1
The type 'System.Data.Objects.DataClasses.EntityObject' is defined in an assembly that is not referenced.
You must add a reference to assembly 'System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
D:'Practice'PTP'UI'WebInterface'User'ManageUser.aspx.cs
18 13
WebInterface
为了解决这个问题,我在WebInterface项目的参考文件夹中包含了System.Data.Entity.dll,它已经解决了这个问题。
我的问题:
如果你看一下我的代码,那么你可以代码相关的EF都在DataAccess项目中,它有所有需要的dll引用,它需要与EF相关的类。
和在WebInterface项目中,我已经包含了DataAccess.dll和它的。aspx页面,我只是简单地调用它的函数来获取数据。
那么为什么在WebInterface项目中也需要System.Data.Entity.dll ?
对
Varun
我只有99%的把握,因为你使用的是老式的EF:)而且你没有分享User类,但是…我认为是User类是EntityFramework感知的。是这种情况下,用户从EntityObject继承?
您可以通过将数据从实体类映射到您的UI类来避免这种情况。但是这让EF的魔力消失了。