Tag: entity framework 4.1

具有entity framework的primefaces增量

我有一个使用Entity Framework 4.0访问的MySQL服务器。 在数据库中,我有一个名为Works的表,其中有些计数。 我用Asp.net开发网站。 该表可以在同一时间再次使用。 而这种情况会导致错误的输入问题。 我的代码是这样的: dbEntities myEntity = new dbEntities(); var currentWork = myEntity.works.Where(xXx => xXx.RID == 208).FirstOrDefault(); Console.WriteLine(“Access work”); if (currentWork != null) { Console.WriteLine(“Access is not null”); currentWork.WordCount += 5;//Default WordCount is 0 Console.WriteLine(“Count changed”); myEntity.SaveChanges(); Console.WriteLine(“Save changes”); } Console.WriteLine(“Current Count:” + currentWork.WordCount); 如果一个以上的线程同时访问数据库,则只保留最后一个更改。 电流输出: t1:线程一 – t2:线程二 t1:访问工作 t2:访问工作 […]

DbContext不会保持连接打开以便重复使用

我正在尝试重用现有的数据库连接,以便我可以使用TransactionScope执行多个数据库操作,而无需调用MSDTC。 entity framework(使用4.1版本中的新DbContext API)似乎不希望保持显式打开的连接打开。 旧的ObjectContext API保持连接按预期打开并记录 。 由于DbContext API只是在DbContext使用ObjectContext ,我预计会有相同的行为。 有谁知道这个改变是有意还是已知问题? 我无法在任何地方找到它。 public void ConnectionRemainsOpen() { using (var context = new TestDataContext()) { try { Assert.AreEqual(ConnectionState.Closed, context.Database.Connection.State); context.Database.Connection.Open(); var firstRecord = context.Table3.FirstOrDefault(); // this Assert fails as State == ConnectionState.Closed Assert.AreEqual(ConnectionState.Open, context.Database.Connection.State); var newRecord = new Table3 { Name = “test”, CreatedTime = DateTime.UtcNow, ModifiedTime […]

实体类型List`1不是当前上下文的模型的一部分

我一直在使用Database First,EF 4.1 我得到“实体类型List`1不是当前上下文模型的一部分。” 尝试从“编辑视图”更新记录时出错。 错误发生在 db.Entry(properties).State = EntityState.Modified; 这是我的模型: public class Users { [Key] public int User_ID { get; set; } public string UserName { get; set; } [NotMapped] public IEnumerable User_Properties { get { return Properties.Where(u => u.User_ID == User_ID); } } public virtual ICollection Properties { get; set; } } public class […]

N层应用程序中的多个DbContexts

我正在创建我的第一个N-Tier MVC应用程序,我遇到了如何使用我的数据库第一种方法管理多个DbContexts 。 我有以下几层 Presentation Service (WCF) Business Data Access 我不想在我的服务层中使用entity framework引用,但是我没有看到如何创建接口或管理两个上下文的东西。 我让它在IDatabaseFactory中使用单个上下文,但我似乎无法找到管理两个的方法。 下面是我在我的服务ctor中创建的UnitOfWork ,但是我看到它的每一种方式我仍然依赖于SiteModelContainer ,而实际上我有另一个上下文。 public class UnitOfWork : IUnitOfWork { private SiteModelContainer _context; private readonly IDatabaseFactory _databaseFactory; protected SiteModelContainer SiteContext { get { return _context ?? (_context = _databaseFactory.Get()); } } public UnitOfWork(IDatabaseFactory factory) { _databaseFactory = factory; _context = _databaseFactory.Get(); } //More […]

使用entity framework加载嵌套实体/集合

我试图在一次调用中急切地加载所有相关实体或实体集合。 我的实体看起来像: Class Person { public virtual long Id { get; set; } public virtual string FirstName { get; set; } public virtual string LastName { get; set; } } Class Employee { public virtual long Id { get; set; } public DateTime AppointmentDate { get; set; } public virtual ICollection Titles { get; set; […]

EF – 在HTTP请求期间创建模型exception时,不能使用上下文

我收到“在创建模型时无法使用上下文。” 在我的一个网页中的Web应用程序中出现问题。 此特定网页每2-3秒POST一次,以刷新屏幕。 根据我的测试,我发现如果我有2个或更多的浏览器实例打开到这个页面,几分钟后我收到一个“创建模型时不能使用上下文”来自存储库深处的exception。 此代码调用“服务”来检索所需的数据。 此代码在MVC Controller类的自定义授权属性中执行。 // Code in custom “Authorization” attribute on the controller int? stationId = stationCookieValue; // Read value from cookie RoomStationModel roomStationModel = RoomStationService.GetRoomStation(stationId); // Error occurs inside this call 这是“RoomStationModel” public class RoomStationModel { [Key] public int RoomStationId { get; set; } public int? RoomId { get; set; } […]

entity frameworkDbContext SaveChanges()OriginalValue不正确

我试图通过覆盖SaveChanges()方法使用EF 4.1实现AuditLog,如下面所述: http://jmdority.wordpress.com/2011/07/20/using-entity-framework-4-1-dbcontext-change-tracking-for-audit-logging/ entity framework4.1 DbContext覆盖SaveChanges以审核属性更改 我遇到了“修改过”的条目问题。 每当我尝试获取相关属性的OriginalValue时,它总是具有与CurrentValue字段中相同的值。 我首先使用此代码,并成功识别修改的条目: public int SaveChanges(string userID) { // Have tried both with and without the following line, and received same results: // ChangeTracker.DetectChanges(); foreach ( var ent in this.ChangeTracker .Entries() .Where(p => p.State == System.Data.EntityState.Added p.State == System.Data.EntityState.Deleted p.State == System.Data.EntityState.Modified)) { // For each change record, get […]

DbSet表名

要在Entity framework 4.0上获取数据库表名,我会这样做: ObjectSetInstance.EntitySet.ToString() 有没有办法在Entity Framework 4.1上执行此操作?

entity framework代码首先是不创建数据库

以下是我的解决方案的概述: 这是我的PizzaSoftwareData类: namespace PizzaSoftware.Data { public class PizzaSoftwareData : DbContext { public DbSet Customers { get; set; } public DbSet Orders { get; set; } public DbSet Products { get; set; } public DbSet Users { get; set; } } } 根据Scott Guthrie博客上的一个示例,您必须在应用程序的开头运行此代码才能创建/更新数据库架构。 Database.SetInitializer(new CreateDatabaseIfNotExists()); 我在PizzaSoftware.UI中的Program.cs中运行那行代码。 namespace PizzaSoftware.UI { static class Program { /// /// […]

动态包含在查询中急切加载的语句 – EF 4.3.1

我有这个方法: public CampaignCreative GetCampaignCreativeById(int id) { using (var db = GetContext()) { return db.CampaignCreatives .Include(“Placement”) .Include(“CreativeType”) .Include(“Campaign”) .Include(“Campaign.Handshake”) .Include(“Campaign.Handshake.Agency”) .Include(“Campaign.Product”) .AsNoTracking() .Where(x => x.Id.Equals(id)).FirstOrDefault(); } } 我想列出包含动态的列表。 我试过了: public CampaignCreative GetCampaignCreativeById(int id, string[] includes) { using (var db = GetContext()) { var query = db.CampaignCreatives; foreach (string include in includes) { query = query.Include(include); } […]