我处理由另一个程序员创建的项目,该解决方案包含Entity Framework 5。
我无法确定使用它创建的实体框架工作流程(代码优先或数据库优先):
在我的项目中,我有这个课程:
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace HummerMobile.Core.Data
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class MobileMapEntities : DbContext
{
public MobileMapEntities()
: base("name=MobileMapEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<BaseLayer> BaseLayers { get; set; }
public DbSet<MapDefinition> MapDefinitions { get; set; }
public DbSet<MapLayer> MapLayers { get; set; }
public DbSet<Map> Maps { get; set; }
public DbSet<SearchConfig> SearchConfigs { get; set; }
public DbSet<VectorLayer> VectorLayers { get; set; }
public DbSet<WFSLayer> WFSLayers { get; set; }
public DbSet<WMSLayer> WMSLayers { get; set; }
public DbSet<PointFeature> PointFeatures { get; set; }
public DbSet<PointFeatureAttachment> PointFeatureAttachments { get; set; }
}
}
但我也有一些edmx
扩展名的文件。
任何想法我怎么能弄清楚它是由哪个实体框架创建的?
答案 0 :(得分:1)
如果*.edmx
文件的定义与DbContext.tt
/ DbContext.cs
文件相同,那么它就是数据库优先(因为代码优先从不创建{{1}文件)。
在您的情况下,您说有一个*.edmx
文件 - 所以它可能是数据库优先。
请注意,项目很可能包含两个单独的EF实体库,一个使用Database-First,另一个使用Code-First。确保从*.edmx
文件中读取的.tt
文件生成类以确定。
然而,它不一定是这两者之间的选择 - 还有#34;来自数据库的代码优先&#34;实体类型使用Visual Studio中的工具直接从数据库模式生成为C# - 通常您可以从它生成的统一且不易读的样式代码中发现它。
*edmx
文件,该文件定义实体及其关系。.edmx
T4模板然后读取DbContext.tt
文件以在其自己的edmx
文件中生成实体类。.cs
文件。.cs
代码 - 这可能需要一段时间用于复杂的数据库,这就是为什么Database-First在业务线应用程序中仍然非常流行的原因。