标签: ef-database-first

为什么Database First EF会跳过某些表的映射?

我正在使用Entity Framework 4和Database First绑定,而EF并没有为我的一些表生成实体.我没有收到任何错误,无论我从设计图面上的"从数据库更新模型"弹出菜单中选择要生成的表多少次,模型中仍然缺少相同的表.

我在向导中没有错误.他们只是没有生成.有线索吗?

entity-framework-4 database-first ef-database-first

4
推荐指数
1
解决办法
3826
查看次数

将ListBox与MVC3中的模型绑定

我的模特是

public class SiteConfig
{
    public SiteConfig()
    {

    }

    public int IdSiteConfig { get; set; }
    public string Name { get; set; }
    public byte[] SiteLogo { get; set; }
    public string Brands { get; set; }
    public string LinkColour { get; set; }

    public IEnumerable<SiteBrand> SiteBrands { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

public class SiteBrand
{
    public int Id { get; set; }
    public int SiteId { get; set; }
    public int BrandId { get; set; }

    public Brand …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc-areas c#-4.0 asp.net-mvc-3 ef-database-first asp.net-mvc-4

4
推荐指数
1
解决办法
1万
查看次数

实体框架5数据库优先级的依赖注入.入门?

我正在寻找使用Entity Framework 5和Database First(连接到SQL Server 2008 R2)创建VB.NET 11 WPF MVVM应用程序.

我选择了Database First,因为我正在将现有解决方案迁移到WPF MVVM,当然数据库已经存在.

我想开始使用依赖注入,所以我可以尽可能多地对我的代码进行单元测试.

我似乎无法找到如何使用依赖注入与EF DB-First,特别是与vb.net一起使用的简明扼要的演练.虽然即使是C#的例子也不错,但我确定.

我真正喜欢的是一个简单的一步一步的指南,解释如何设置解决方案,如何设置每个部分准备好依赖注入等,但这些似乎很难得到.

到目前为止,我已经创建了解决方案及其项目,如下所示;

  • DBAccess - 它只包含我的.edmx文件,以及一个能够将ConnectionString提供给构造函数的小mod.
  • DBControl - 它包含了我用来在EDMX和ViewModel之间提供图层的各种类.具体来说,我在这里填写复杂类型(我使用设计器创建),用于通过UI显示"Friendlier"数据,以及将这些"友好"复杂类型转换为映射实体以进行保存/更新.我的数据库中每个表都有一个类.每个方法都有两个"FetchFriendlyRecords"方法(一个接受过滤器)和一个" AddUpdateFriendlyRecord "方法.我为每个类创建了一个接口.每个类在它的构造函数中接受一个DbContext,我只是从DBAccess项目传递我的DBContext.
  • MainUI - 它包含我的MVVM层,并引用DBControl项目中的每个类以提供DataBinding等.

我已经看到建议,不是花时间编写复杂的解决方案,以便能够使用EF进行单元测试,而是创建一个填充了测试数据的公司模拟数据库,并简单地将代码指向模拟数据库,而不是住一个.但是,我更愿意能够创建一个内存解决方案,无需点击SQL Server即可运行.

任何帮助都会很棒,包括告诉我我是否会这么做错!

更新:

我已经采取了下面由Paul Kirby提供的解决方案,并创建了一个"排序"的存储库模式我相信.

我创建了一个界面;

Public Interface IFriendlyRepository(Of T)
        ReadOnly Property FriendlyRecords As ObservableCollection(Of T)
        Function GetFilteredFriendlyRecords(predicates As List(of Func(Of T, Boolean))) As ObservableCollection(Of T)
        Function AddEditFriendlyRecord(ByVal RecordToSave As T) As EntityException
        Sub SaveData()
End Interface
Run Code Online (Sandbox Code Playgroud)

然后我逐个类地实现了这个接口;

Namespace Repositories
    Public Class clsCurrenciesRepository
        Implements Interfaces.IFriendlyRepository(Of CriticalPathDB.FriendlyCurrencies)

        Private …
Run Code Online (Sandbox Code Playgroud)

vb.net entity-framework dependency-injection ef-database-first entity-framework-5

4
推荐指数
1
解决办法
3285
查看次数

创建实体框架模型时忽略数据库默认值

假设我的数据库中有下表:

CREATE TABLE [dbo].[Test]
(
    [Id]      INT            IDENTITY (1, 1) NOT NULL,
    [Active]  BIT            DEFAULT ((1)) NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)

从此数据库创建 EF 模型时,映射到列的Active 位列的映射Boolean没有默认值(请参阅属性“默认值”): 属性视图 - 模型图

为什么实体框架会这样?为什么在创建模型时不会自动将数据库中定义的默认值应用到模型中?DB 声明默认值应该是1,我假设它true是模型中的默认值。我真的必须再次为模型中的所有列设置默认值吗?

我检查了intbit列的这种行为。


我做了更多调查,并尝试手动将“默认值”属性设置为Truetrue,并且两者都有效。

手动更改默认值

测试实体的自动生成的构造函数从

public Test()
{
}
Run Code Online (Sandbox Code Playgroud)

public Test()
{
    this.Active = true;
}
Run Code Online (Sandbox Code Playgroud)

所以默认值在 EF 中是可能的,但是在基于数据库优先生成模型时没有设置它们,至少在我的机器上没有。

所以,问题仍然存在:我是否真的必须再次为模型中的所有列设置默认值,即使它们已经在数据库中设置?

c# sql-server entity-framework ef-database-first entity-framework-6

4
推荐指数
1
解决办法
3340
查看次数

从Entity Framework中的ObjectStateEntry获取所有键及其值

对于审计日志记录目的,我SaveChanges()在EF 4.1 Database-First方法中覆盖方法.

我有所有ObjectStateEntry对象,我想知道我是否可以从每个ObjectStateEntry获取所有键及其值.

   IEnumerable<ObjectStateEntry> changes = this.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Deleted | EntityState.Modified);
    foreach (ObjectStateEntry stateEntryEntity in changes)
    {
        if (!stateEntryEntity.IsRelationship &&
                stateEntryEntity.Entity != null &&
                    !(stateEntryEntity.Entity is DBAudit))
        {
          list<object , object> KeyValues = GetAllKeyValues(stateEntryEntity );
          //Do log all keyvalues
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# audit entity-framework entity-framework-4.1 ef-database-first

3
推荐指数
1
解决办法
6255
查看次数

将MVC3模型映射到MSSQL 2008 View首先使用代码,然后使用数据库

在SQL Server 2008中,我有一个这样的视图:

CREATE VIEW products AS
   SELECT a.ID, a.Name, b.ID as SubID, b.Name as SubName
   FROM main_product as a 
   INNER JOIN sub_product as b on a.ID = b.mainID
Run Code Online (Sandbox Code Playgroud)

这是我的模特:

Public class Products
{
    public int ID { get; set; }
    public int Name { get; set; }
    public int SubID { get; set; }
    public int SubName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我如何将MVC3的视图映射到SQL Server视图?

UPDATE

我试过这个:

 public class PartialContext : DbContext
 {       
     protected override void OnModelCreating(DbModelBuilder modelBuilder)
     {
         modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); …
Run Code Online (Sandbox Code Playgroud)

sql-server entity-framework sql-view ef-code-first ef-database-first

3
推荐指数
1
解决办法
1504
查看次数

实体框架模型不显示具有组合键的表

我已从现有数据库创建了一个实体框架模型,没有任何问题或警告.我遇到了一个没有在代码中生成的表,并且没有出现在模型中.

这个表和其他一些非常类似的表非常简单:2列,每个外键和一个主键,它是两个外键的组合.

我正在挖掘其他一些解决方案,我读到的最接近的事情就是桌子上根本没有主键.它似乎不是那个问题,因为生成的XML看起来很好并且没有错误消息.

我在EDMX中的表格:

    <EntityType Name="UserTaskSubscription">
      <Key>
        <PropertyRef Name="UserID" />
        <PropertyRef Name="TaskID" />
      </Key>
      <Property Name="UserID" Type="int" Nullable="false" />
      <Property Name="TaskID" Type="int" Nullable="false" />
    </EntityType>
Run Code Online (Sandbox Code Playgroud)

我也试图放弃并重新创建EDMX,但我也没有成功.

任何建议都会非常有帮助.

c# ef-database-first sql-server-2012 entity-framework-5 visual-studio-2012

3
推荐指数
1
解决办法
2709
查看次数

首先使用实体​​框架数据库创建一对一关系

EF Code First中,我们可以通过这样的编码来创建一对一的关系:

public class User
{
public int UserID {get;set;}
public string Name {get;set;}
public int UserDetailID {get;set;}

public UserDetail Detail {get;set;}
}

public class UserDetail
{
public int UserDetailID {get;set;}
public string Address {get;set:}
public int UserID {get;set;}

public User User {get;set;}

}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在Visual Studio 2012中首先使用EF数据库创建相同的关系时,我遇到了麻烦.这是我的代码:

CREATE TABLE [dbo].[Users] (
[UserID]                 UNIQUEIDENTIFIER CONSTRAINT [DF_Users_UserID] DEFAULT (newid()) NOT NULL,
[UserDetailID]                 UNIQUEIDENTIFIER NOT NULL,
[Name]                      NVARCHAR (50)    NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED …
Run Code Online (Sandbox Code Playgroud)

entity-framework one-to-one ef-code-first ef-database-first

3
推荐指数
1
解决办法
1万
查看次数

EF Code First,Model First或Db First?适用于许多不断变化的中型应用

我们将使用MVC 4和EF 5为私营公司开发一个中大型定制Web应用程序.

早期分析和以前在该业务领域的经验表明,它将拥有超过150个表/实体,因为我们的客户不是软件工程师,我们知道我们的数据模型将在项目进展中多次改变.

现在,根据以下内容,我的Q是哪种方法对我们更好:

1)由于会发生许多变化,因此更新数据模型和数据存储的工作量减少.

2)创建数据存储所需的时间更少,并有助于更快地推进项目.

注意:此应用程序将使用大量数据(对于某些实体,10k,100k对象).但是,它将很少(有时可能没有)并发请求和在线用户.

提前致谢

database-design ef-code-first ef-database-first asp.net-mvc-4 entity-framework-5

3
推荐指数
1
解决办法
3335
查看次数

使用实体框架进行部署后数据库更改的最佳实践

我正在开发一个ASP.NET Web Forms项目,即使在部署之后,该项目也会经历大量的数据库更改.

我们倾向于使用Entity Framework 5和Database First设计范例.但是,由于我们必须在部署之后对数据库进行大量更改,如果我使用数据库优先方法,那么每次更新数据库时,我都必须删除整个模型并重新生成它.是否有任何最佳实践可以减少这个过程的痛苦?

asp.net entity-framework ef-database-first

3
推荐指数
1
解决办法
2799
查看次数