实际上有什么区别: this.HasRequired(a => a.Something) .WithMany() .Map(a => a.MapKey("SomethingId")); 和 this.HasRequired(a => a.Something) .WithMany() .HasForeignKey(a => a.SomethingId);
我正在尝试创build一个通用的存储库来访问我的数据库。 在EF6中,我能够做到这一点,以获得一个特定的实体: protected IDbSet<T> dbset; public T Get(object id) { return this.dbset.Find(id); } EF7中的DbSet缺lessFind方法。 有没有办法实现上面的代码?
当查询一个需要稍后在代码中访问导航属性的大表时(我明确不想使用延迟加载),那么执行效果会更好.Include()还是.Load() ? 或者为什么使用这一个呢? 在这个例子中,包含的表全部只有大约10个条目,员工有大约200个条目,并且可能会发生这样的情况,其中大部分将被加载,因为它们匹配where子句。 Context.Measurements.Include(m => m.Product) .Include(m => m.ProductVersion) .Include(m => m.Line) .Include(m => m.MeasureEmployee) .Include(m => m.MeasurementType) .Where(m => m.MeasurementTime >= DateTime.Now.AddDays(-1)) .ToList(); 要么 Context.Products.Load(); Context.ProductVersions.Load(); Context.Lines.Load(); Context.Employees.Load(); Context.MeasurementType.Load(); Context.Measurements.Where(m => m.MeasurementTime >= DateTime.Now.AddDays(-1)) .ToList();
我在我的项目中有一个模型如下: public class Model { public int Id { get; set; } public long FromNo { get; set; } public long ToNo { get; set; } public string Content { get; set; } public long TicketNo { get; set; } } 迁移如下 public override void Down() { AlterColumn("dbo.Received", "FromNo", c => c.Long(nullable: false)); AlterColumn("dbo.Received", "ToNo", […]
我最近开始使用entity framework迁移,并注意到,当我运行Update-Database命令时,数据库名称没有通过。 我的连接string是: <connectionStrings> <add name="DataContext" connectionString="Server=.\SQLEXPRESS;Initial Catalog=TestDB;Trusted_Connection=Yes;" providerName="System.Data.SqlClient" /> </connectionStrings> 我第一次运行Update-Database时,我的数据库是用正确的名称TestDB创build的。 但是,只要我对其中一个实体进行更改,除非我添加启动项目名称(我正在使用多项目解决scheme),否则不会再更新: Update-Database -StartUpProjectName "TestDB.Data" 然后这又创build了另一个新的数据库,这个迁移将会一直继续使用。 我不介意不得不放在StartUpProjectName命令,但有没有办法来覆盖这个数据库的默认名称? 它总是创build数据库为 TestDB.Data.DataContext 有没有办法确保在传递StartUpProject名称时创build的数据库只是称为TestDB,或者这是使用StartUpProjectName设置的限制吗? 作为一个说明,我认为我需要指定StartUpProjectName的原因是我有一个多层项目设置。 迁移configuration文件是在我的“数据”项目中,实体/模型在我的“域”项目等我也没有任何初始化我的Global.asax.cs文件中的选项,因为我以前会用先编码4.2。 所以在我的项目中,我只是在我的数据项目中有一个DataContext,在该项目中也有Migrationsconfiguration。 编辑: 由于我最初设置了这个问题,我偶然发现了在多项目解决scheme中命名数据库的“正确”方法。 虽然下面的答案将起作用,但这意味着你正在复制你的web.config在另一个不是理想解决scheme的领域。 相反,你可以通过做这样的事情把名字放到你的DbContext中(DataContext就是我在项目中使用的名字): public class DataContext : DbContext { public DataContext() : base("DatabaseNameHere") { } public DbSet<Table1> Table1 { get; set; } public DbSet<Table2> Table2 { get; set; } public […]
我正在使用VS 2012 MVC4代码首先构build一个Web应用程序。 为了在更改模型后重新创build.mdf文件,我手动从VS中的app_data目录中删除了该文件。 我已经做了几次,没有任何问题。 现在我收到一个例外: 底层提供程序在打开时失败。 ==>不能将MYDB.mdf文件MYDB.mdf为数据库'MYDB' 。 我将不胜感激您如何重新创build.mdf文件的帮助。 谢谢!
设想三个实体(Customer,Book,Author)是这样的: 客户有很多书籍 一本书有一个作者 我使用这些数据来打印这样的报告: Customer: Peter Book: To Kill a Mockingbird – Author: Harper Lee Book: A Tale of Two Cities – Author: Charles Dickens Customer: Melanie Book: The Hobbit – Author: JRR Tolkien 当我查询客户时,正如我们所期望的那样,我得到了一系列以下性质的查询 查询获取客户 每个客户查询他的书籍的查询 每本书的查询来获取其作者 我可以通过包含这样的书籍来减less查询次数: var customers = db.Customers.Include(c => c.Books); 但是我不知道如何加载第三层(作者)。 我怎样才能做到这一点?
好的,所以我对EF和LINQ都很陌生。 我已经想出了如何插入和删除,但由于某种原因更新似乎逃脱我的把握。 这是我的代码示例: EntityDB dataBase = new EntityDB(); Customer c = new Customer { Name = "Test", Gender = "Male }; dataBase.Customers.AddObject(c); dataBase.SaveChanges(); 上面创build并添加一个logging就好了。 Customer c = (from x in dataBase.Customers where x.Name == "Test" selext x).First(); dataBase.Customers.DeleteObject(c); dataBase.SaveChanges(); 以上有效删除指定的logging。 现在我该如何更新? 我似乎无法find实体集合上的“ UpdateObject() ”方法。
我使用Visual Studio 2013 Update 2创build了一个ASP.NET MVC 5应用程序。 在应用程序中,我有一个帐户控制器。 这与我习惯的不同,不包含dbcontext的实例化。 public class AccountController : Controller { private ApplicationUserManager _userManager; public AccountController() { } public AccountController(ApplicationUserManager userManager) { UserManager = userManager; } public ApplicationUserManager UserManager { get { return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); } private set { _userManager = value; } } 我的默认情况下创build的web.config具有这样的连接string: <connectionStrings> <add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WebApplication3-20140417072624.mdf;Initial […]
如何在不使用Entity Framework进行安装的情况下部署和configurationODP.NET? A.如何部署和configurationOracle.DataAccess.Client? B.如何部署和configurationOracle.ManagedDataAccess.Client? C.为了使EDMXs与Oracle SSDL一起工作,你需要做什么? D.你需要安装哪些devise器支持?