Tag: entity framework

我的WPF / EntityFramework应用程序无法在其他计算机上运行

我已经创建了一个WPF应用程序,它首先在LocalDb上使用entity framework/代码(我已经在“模型”目录上创建了我的数据库,一切似乎都很好)。 它在我的笔记本电脑上工作得很好,我想与我的朋友分享,但它不起作用。 我想我在另一台计算机上有一个SQL错误,但它没有显示它。 它只是显示一个Windows应用程序错误…我想是在我尝试加载我的数据库上下文时。 我的数据库环境: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.Entity; namespace ModernUINavigationApp1.Model { class Supcontext : DbContext { public DbSet InfosConnexions { get; set; } public DbSet InfosFiles { get; set; } public DbSet Logs { get; set; } } } 我的app.config: 编辑: 安装了localDb,我可以在每台计算机上构建并运行一个新的entity framework解决方案,并在服务器资源管理器(在visual studio上)上查看localdb。 在我的解决方案(我试图共享的那个)和另一台计算机上,我删除了app.config,删除并重新导入entity […]

为什么我需要在SaveChanges之前更改绑定源位置

我有一个小型的WinForms演示应用程序。 其中一个表格是我的添加新人表格。 我使用了Details View而不是Data Sources中的DataGridView 。 当我输入数据并单击导航器上的保存按钮时,没有任何更改,但是我在表单Load AddNew之后放置了MovePrevious和MoveNext ,一切都按预期工作。 public partial class AddPersonForm : Form { private readonly DemoContext _context; public AddPersonForm() { _context = new DemoContext(); InitializeComponent(); } protected override void OnLoad(EventArgs e) { _context.People.Load(); personBindingSource.DataSource = _context.People.Local.ToBindingList(); personBindingSource.AddNew(); personBindingSource.MovePrevious(); personBindingSource.MoveNext(); base.OnLoad(e); } private void personBindingNavigatorSaveItem_Click(object sender, EventArgs e) { int changes = _context.SaveChanges(); […]

EF 7 beta 6:EF 7中具有一对多关系的实体

我有一个非常简单的模型: class Bag { public int Id { get; set; } public ICollection RandomThings { get; set; } } class RandomThing { public int Id { get; set; } public String Description{ get; set; } } 我的上下文的OnModelCreating (在EF 6中 )类似于: protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity() .ToTable(“Bag”) .HasMany(x => x.RandomThings).WithRequired(x => x.Bag).WillCascadeOnDelete(); modelBuilder.Entity().ToTable(“RandomThing”); […]

无法创建“匿名类型”类型的常量值。 在此上下文中仅支持原始类型或枚举类型

我对linq和entity framework非常linq 。 我试图解决一个问题,为什么以下不起作用。 产生的错误是“无法创建类型为’匿名类型’的常量值。在此上下文中仅支持基本类型或枚举类型。” 我已经尝试了这么多不同的方法,但仍然得到与原始类型有关的错误。 如果有人可以看看下面的代码并希望指出哪里出错,我将不胜感激。 public Entities.BikeData[] GetBikesWithExpiredSyncDeadline(int noOfDays) { using (OfficeEntities cxt = GetContext()) using (ReportingEntities RepCxt = GetReportingContext()) { Data.Repository.Abstract.IBikeRepository BikeRepos = new Data.Repository.Concrete.BikeRepository(); var details = (from sd in cxt.BikeDetails where sd.autoreminder == true && (sd.lastremindersent == null || sd.lastremindersent < EntityFunctions.AddDays(DateTime.UtcNow, noOfDays * -1)) && (sd.emailaddress != null && […]

如何在必要时使用ADO.NET Entity Framework加载varbinary(max)字段?

我的一个表中有一个varbinary(max)字段,但我不是每次都需要它,而且我正在寻找一种只在必要时从数据库中获取它的方法。 我正在使用ADO.NETentity framework。 怎么做?

使用dbcontext的正确方法(全局或传递为参数?)

当我调用一个需要dbcontext进行update或insert但只需要一个saveChange() ,如下所示 行动:登录 TempDBEntity context = new TempDBEntity(); var temp = context.Users.Where(m => m.user_unique_id == 1).FirstOrDefault(); temp.timestamp = new DateTime(); temp.AddLog(“Login”); context.SaveChanges(); function:AddLog public void AddLog(string activity){ TempDBEntity context2 = new TempDBEntity(); var log = new UserLog(); log.user_id = this.user_id; log.activity = activity; context2.UserLog.Add(log); context2.SaveChanges(); } 如您所见,有两个SaveChanges() ,我只需要1个SaveChanges() 。 我应该将DBContext作为AddLog()另一个参数传递,还是应该在这种情况下为dbcontext声明静态变量? 非常感谢。

entity framework组采用最老的mySQL

我有一个庞大的物品清单,需要按一个属性对它们进行分组。 然后应选择每组中最老的一组。 简化示例:选择每个FirstName的最旧用户。 using (ED.NWEntities ctx = new ED.NWEntities()) { IQueryable Result = ctx.User.GroupBy(x => x.FirstName) .Select(y => y.OrderBy(z => z.BirthDate) .FirstOrDefault()) .AsQueryable(); } class级User : public partial class User { public int UserID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public Nullable BirthDate […]

越过entity frameworkBeginTransaction

我试图理解unit testing中的模拟,并将unit testing过程集成到我的项目中。 所以我一直走过几个教程并重构我的代码以支持模拟,无论如何,我无法通过测试,因为我试图测试的数据库方法是使用事务,但是在创建事务时,我得到了 底层提供程序在Open上失败。 没有交易,一切正常。 我目前的代码是: [TestMethod] public void Test1() { var mockSet = GetDbMock(); var mockContext = new Mock(); mockContext.Setup(m => m.Repository).Returns(mockSet.Object); var service = new MyService(mockContext.Object); service.SaveRepository(GetRepositoryData().First()); mockSet.Verify(m => m.Remove(It.IsAny()), Times.Once()); mockSet.Verify(m => m.Add(It.IsAny()), Times.Once()); mockContext.Verify(m => m.SaveChanges(), Times.Once()); } // gets the DbSet mock with one existing item private Mock<DbSet> GetDbMock() […]

Linq存储过程返回XML

我正在使用Entity Framework代码优先方法。 我想从DbContext类调用存储过程并获取XML输出。 存储过程(SQL Server): CREATE PROCEDURE xml_test AS BEGIN DECLARE @xml1 xml SET @xml1 = (SELECT * from Product FOR XML RAW) SELECT @xml1 AS my_xml END LINQentity framework: using (DBContext db = new DBContext()) { var ProductList = await db.Database.ExecuteSqlCommandAsync(“exec xml_test”); } 这里ProductList列表返回-1。 我想获取存储过程返回的xml输出。 注意:我也尝试了类似的方法: ExecuteSqlCommand,SqlQuery没有帮助。

同时使用entity framework与SQL Server和SQLite数据库

我有一个用于测试目的的C#.Net 4.0控制台应用程序(使用VS 2012)。 我的目标是能够创建一个可以在MS SQL Server数据库和SQLite数据库上使用的单个Entity Framework .edmx文件。 基本上,我想使用相同的实体模型类和集合进行查询,但很容易就能随意在两个不同的数据库之间切换。 到目前为止,我已经通过连接到MS Server数据库并添加了我的单个测试表(称为Contact)来创建我的.edmx文件。 有了这个,我可以使用以下代码从我的表中获取数据: var db = new DataAccess.ContactTestEntities(); foreach (var contact in db.Contacts) Console.WriteLine(“” + contact.ID + “. ” + contact.FirstName + ” ” + contact.LastName); 现在,我希望能够使用相同的代码,而是连接到SQLite数据库。 我编写了一个部分类,允许我更改contruction上的连接字符串,如下所示: var db = new DataAccess.ContactTestEntities(“MY SQLITE CONNECTION STRING”); 它在这方面工作正常,除了在尝试查询数据库时我收到此错误: 无法将类型为“System.Data.SQLite.SQLiteConnection”的对象强制转换为“System.Data.SqlClient.SqlConnection”。 我试图找到解决方案,但已经走到了尽头,我正在努力寻找下一步。 这就是我的问题 :我怎样才能解决这个问题? 或者我可以采取另一种方法来获得相同的预期结果? 堆栈跟踪以上exception: 处于System.Data.Ents.Clmand.AntityClient.EntityCommandDefinition.ExecuteStoreCommands的System.Data.Common.Utils.CommandHelper.SetStoreProviderCommandState(EntityCommand entityCommand,EntityTransaction entityTransaction,DbCommand […]