标签: ef-code-first

EF4 Code First:如何在不添加导航属性的情况下添加关系

我应该如何使用Code First定义关系但不使用任何导航属性?

以前我通过在关系的两端使用导航属性来定义One-Many和Many-Many.并在数据库中创建适当的关系.这里是类的外观的简化版本(为了简单起见,我将Many-Many关系转换为one-many).

public class User 
{
    public string UserId { get; set; }
    public string PasswordHash { get; set; }
    public bool IsDisabled { get; set; }
    public DateTime AccessExpiryDate { get; set; }
    public bool MustChangePassword { get; set; }

    public virtual Role Role { get; set; }
}

public class Role
{
    public int RoleId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }

    public virtual ICollection<User> Users …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework code-first entity-framework-4 ef-code-first

15
推荐指数
1
解决办法
8387
查看次数

EF CodeFirst:DropCreateDatabaseIfModelChanges不起作用

我在Global.asax中使用以下代码:

DbDatabase.SetInitializer<MyDBContext>
   (new DropCreateDatabaseIfModelChanges<MyDBContext>());
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.

虽然我的模型已经改变,我试图使用其中一个新添加的表,但它只是说找不到表.

Invalid object name 'dbo.TableName'.
Run Code Online (Sandbox Code Playgroud)

但是,如果我运行它,它似乎工作,并且正在创建表:

DbDatabase.SetInitializer<MyDBContext>(new DropCreateDatabaseAlways<MyDBContext>());
Run Code Online (Sandbox Code Playgroud)

它确实更新了我的数据库.

我做错了什么?

c# entity-framework ef-code-first entity-framework-4.1

15
推荐指数
2
解决办法
2万
查看次数

EF 4.1,Code-First:急切加载级联集合

如果我有以下班级模型......

public class A
{
    public int AId { get; set; }
    public ICollection<B> BCollection { get; set; }
}

public class B
{
    public int BId { get; set; }
    public ICollection<C> CCollection { get; set; }
}

public class C
{
    public int CId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...是否可以A从包含所有级联集合的数据库中急切加载类型的对象?

我可以这样包括BCollection:

A a = context.ASet.Where(x => x.AId == 1)
          .Include(x => x.BCollection)
          .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

我是否还可以以某种方式CCollection包含所有已加载的B对象,以便A使用单个数据库查询来获取内存中的所有依赖对象?

.net entity-framework ef-code-first entity-framework-4.1

15
推荐指数
1
解决办法
4884
查看次数

实体框架4代码优先 - 防止数据库丢弃/创建

我使用Code First范例编写了一个ASP.Net MVC 3应用程序,当我对模型进行更改时,Entity Framework会自动尝试通过DROP和CREATE语句重新创建基础SQL Server数据库.问题是应用程序托管在第三方远程服务器上,这限制了我可以拥有的数据库的数量,并且似乎不允许我以编程方式执行"CREATE DATABASE ..."语句,因为我收集此错误消息:

数据库"master"中的CREATE DATABASE权限被拒绝.

有没有办法阻止实体框架删除并尝试重新创建整个数据库,而是让它简单地删除表并重新创建它们?

在手动创建数据库并运行应用程序后,我也会收到以下错误,因为实体框架尝试修改数据库:

无法检查模型兼容性,因为数据库不包含模型元数据.确保已将IncludeMetadataConvention添加到DbModelBuilder约定中.

sql-server-2008 entity-framework-4 ef-code-first

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

使用Include来获取派生类的加载属性

我有类似的课程:

Person
{
   Name
   Address
}

Employee : Person
{
   Compensation - object
}

Visitor : Person
{

}
Run Code Online (Sandbox Code Playgroud)

如果我写linq:

var persons = Context.Persons
                .Include("Compensation");
Run Code Online (Sandbox Code Playgroud)

我收到错误:

指定的包含路径无效.EntityType"Person"未声明名为"Compensation"的导航属性.

如果我这样做,它可以正常工作

var persons = Context.Persons
                .OfType<Employee>()
                .Include("Compensation");
Run Code Online (Sandbox Code Playgroud)

但我想让员工和访问者在同一个查询中.

看起来在EF4 UserVoice上有此功能的请求:http: //data.uservoice.com/forums/72025-ado-net-entity-framework-ef-feature-suggestions/suggestions/1249289-include-property-of衍生类?REF =标题

但它看起来不会很快就会完成.

这个问题有什么好的解决方法?

inheritance entity-framework ef-code-first

15
推荐指数
1
解决办法
4147
查看次数

实体框架代码优先:使用注释设置一对一外键关联

我跟随两个实体,我试图使用外键关联(一对一).

public class StandardRack {
    public int Id {get;set}
    public StandardRelay StandardRelay {get;set} 
}

public class StandardRelay {
    public int Id {get;set} 

    public int StandardRack_Id {get;set;}
    [Required][ForeignKey("StandardRack_Id")]
    public StandardRack StandardRack { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这会抛出ModelValidationException.任何想法为什么这样一个看似简单的一对一双向关系无法配置.

编辑:

这是例外:

捕获到System.Data.Entity.ModelConfiguration.ModelValidationException消息=在模型生成期间检测到一个或多个验证错误:

System.Data.Edm.EdmAssociationEnd :: Multiplicity在关系'StandardRelay_StandardRack'中的角色'StandardRelay_StandardRack_Source'中无效.由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为*.

Source = EntityFramework StackTrace:位于System.Data.Entity的System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateCsdl(EdmModel model)的System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl(EdmModel model,XmlWriter writer) .DbModelBuilder.Build(DbProviderManifest providerManifest,DbProviderInfo providerInfo)在System.Data.Entity.DbModelBuilder.Build(的DbConnection providerConnection)在System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext internalContext)在System.Data.Entity.Internal. RetryLazy 2.GetValue(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.InternalSet1.Initialize()在System.Linq.Enumerable.ToList的System.Data.Entity.Internal.Linq.InternalSet 1.GetEnumerator() at System.Data.Entity.Infrastructure.DbQuery1.System.Collections.Generic.IEnumerable.GetEnumerator()at System.Collections.Generic.List 1..ctor(IEnumerable1 collection) [TSource](IEnumerable`1 source)位于D:\ RailwayProjects\RelayAnalysis\TestApplication\MainWindow.xaml.cs中的TestApplication.MainWindow.Window_Loaded(Object …

entity-framework ef-code-first entity-framework-4.1

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

C#EF Code First虚拟关键字,它有什么作用?

在声明导航属性时,为什么我们需要使用"virtual"关键字?我知道Code First框架以某种方式使用它来识别属性是导航属性,但我想知道如何.具体来说,我想知道它与MSDN文档中关于"虚拟"关键字的描述有何关联:http://msdn.microsoft.com/en-us/library/9fkccyh4(v = vs.80)的.aspx

.net c# entity-framework ef-code-first

15
推荐指数
1
解决办法
5982
查看次数

EF Code First MigrateDatabaseToLatestVersion接受来自config的连接字符串Name

在我的项目中尝试实施EF迁移时,我被困在一个地方.

EF Code First MigrateDatabaseToLatestVersion接受来自config的连接字符串Name.

在我的情况下,数据库名称在运行时得知(用户从下拉列表中选择它).就像DbContext在其构造函数中接受,ConnectionString或connectionString Name的方式,"MigrateDatabaseToLatestVersion"不接受相同的

System.Data.Entity.Database.SetInitializer
(new MigrateDatabaseToLatestVersion<SrcDbContext, SRC.DomainModel.ORMapping.Migrations.Configuration>(connString));
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来实现这一目标?

c# entity-framework ef-code-first ef-migrations

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

以代码优先方法映射SQL视图

我有一个SQL视图:

WITH DirectReports (ID,ParentFolderID, ParentFolderName,FolderID,FolderName,OwnerOCID,OwnerArName,OwnerEnName,FolderType,LEVEL)
                            AS
                            (
SELECT        e.Id AS ID,cast(cast(0 AS binary) AS uniqueidentifier) AS ParentFolderID, cast('MainFolder - ' + MainFolders.enName AS nvarchar(250)) AS ParentFolderName, 
                         e.Id AS FolderID, e.Name AS FolderName, WorkSpaces.Owner_Id AS OwnerOCID, OrgCharts.arName AS OwnerArName, OrgCharts.enName AS OwnerEnName, 
                         MainFolders.Type AS FolderType, 0 AS LEVEL
FROM            WorkSpaceFolders AS e INNER JOIN
                         MainFolders ON MainFolders.RootFolder_Id = e.Id INNER JOIN
                         WorkSpaces ON WorkSpaces.Id = MainFolders.WorkSpace_Id INNER JOIN
                         OrgCharts ON OrgCharts.Id = WorkSpaces.Owner_Id
WHERE        e.Root = 1 AND e.Parent_Id IS NULL …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first

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

使用Entity Framework保持状态模式

我目前正在开发MVC 3中的项目.我已将我的问题分开,因此有一些项目,如Core,Repository,UI,Services等.我实现了Repository,UnitOfWork,最重要的是State模式.

我正在使用Entity Framework 4.3来保存我的数据,并且我遇到了一个涉及当前状态持久性的相当烦人的情况.以下是一些类示例:

public class Request
{
    public int RequestId { get; set; }

    public State CurrentState { get; set; }
}

public abstract class State
{
    [Key]
    public string Name {get; set;}

    public virtual void OpenRequest(Request request)
    {}

    public virtual void CloseRequest(Request request)
    {}
}

public class RequestIsOpenState : State
{
    public RequestIsOpenState()
    {
        this.Name = "Open";
    }

    public override void CloseRequest(Request request)
    {
        request.CurrentState = new RequstIsClosedState();
    }
}

public class RequestIsClosedState : State
{
    public …
Run Code Online (Sandbox Code Playgroud)

c# state entity-framework unit-of-work ef-code-first

15
推荐指数
2
解决办法
1753
查看次数