0
由于对c#EntityFramework的了解还不够,滥用EF,导致我在写一个c#窗体项目的时候,遇到了这个问题并让我花费了大量的时间去修改。写下此文来记录我犯的错误。
我的项目场景是:
winfrom窗体程序,允许许多客户端同时运行在不同的机器上的,客户端分为用户和管理者。用来实现不同的功能。全部客户端访问的是同一数据库。
但是不管是winfrom窗体还是web应用程序数据使用EF(EntityFramework)出现数据不同步问题大多数情况下都是同一个问题导致的。
出现的问题场景:
一个客户端运行的时候是检查不到这个问题的,如果你的项目只是一个客户端的话就不存在这个问题。如果是多个客户端同时运行,就比如A、B客户端现在都已经打开了同一个Employee(员工)的个人信息面板,然后在A客户端上对A的信息进行更新,然后直接在B客户端刷新这个页面,而B客户端显示的信息还是之前的信息,不是A客户端更新过的最新信息。
问题的原因:
RepastEntities 类是针对我的项目VS自动生成的(派生DbContext的上下文类),DbContext类是负责与数据交互作为对象的主要类。在此贴出我的代码:namespace Repast.Dao
{
static class RepastEntityDb
{
public static RepastEntities db = new RepastEntities();
}
}
Dao类:namespace Repast.Dao
{
class EmployeeDaoImpl : EmployeeDao
{
private RepastEntities db =RepastEntityDb.db;
//返回所有的员工
public List AllEmployee(string sort)
{
List list = null;
try
{
//linq sql 语句
var sql = from e in db.Employee select e;
list = sql.ToList();
if (list.Count == 0)
{
list = null;
}
} catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine("Dao.EmployeeDaoI