标签: ef-code-first

EF代码优先和数据库视图

我刚开始用Code First查看数据库视图...并尝试决定是否应该使用它们.

这里 Ladislav建议对表和Db-View使用NotMapped继承父(我的视图只添加子实体的总和)......但是如何使用CF迁移?我真的想用它们.

此外...导航属性将适用于Db-View实体?

有没有办法将数据直接保存到Db-View实体(和它的表)?

entity-framework ef-code-first

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

EF 5.0 - 在不同的DbSet中使用时,将基类和子类组合到一个数据库表中

我有一个代码,第一个DbContext,它使用不同DBSets中的基类和子类

例如.DbSet动物; DbSet狗; DbSet Cats;

狗和猫是动物的亚类.当数据库由代码首先生成EF 5.0时,我只得到一个表(动物) - 我预期的地方(并且想要三个) - 动物,猫和狗.有没有办法让它这样做(使用流畅的api?)?

mapping inheritance entity-framework fluent ef-code-first

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

EF 5.0 Code First双向导航在子节点中使用外键id

我有以下课程

public class Employer
{
    [Key]
    public Int64 EmployerID { get; set; }
    public String CompanyName { get; set; }
    public virtual List<Employee> Employees { get; set; }
}

public class Employee
{
    [Key]
    public Int64 EmployeeID { get; set; }
    public String EmployeeName { get; set; }
    public virtual Employer EmployerInfo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在数据库上下文中,我将关系设置为

modelBuilder.Entity<Employer>()
.HasMany(p => p.Employees)
.WithRequired()
.Map(x => x.MapKey("EmployerID"));
Run Code Online (Sandbox Code Playgroud)

执行某些操作后,将使用具有EmployerID外键和一个额外键的Employee表创建数据库EmployerInfo_EmployerID.

现在,当我获取雇主数据时,我正在获取员工的详细信息.但是当我尝试获取员工数据时,我将EmployerInfo视为null.这是因为我需要从Employee到EmployerInfo的关系.

如何在此上下文中设置双向关系?

entity-framework ef-code-first

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

实体框架 - 反向工程师代码优先 - 覆盖变更

我正在使用EF Power Tools对现有数据库进行逆向工程.这可以.在EDMX Database-1st Route下,我将为Data Annotations等任何覆盖创建部分类,例如,LedgerPeriod是原始的EntityObject:

[MetadataType(typeof(LedgerPeriodMetaData))]
public partial class LedgerPeriod
{
    public class LedgerPeriodMetaData
    {

        [Required(ErrorMessage = "Period Start Date Required")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        [DataType(DataType.Date)]
        public object PeriodDateFrom { get; set; }

        [Required(ErrorMessage = "Period End Date Required")]
        [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
        [DataType(DataType.Date)]
        public object PeriodDateTo { get; set; }

    }
}
Run Code Online (Sandbox Code Playgroud)

这可以.现在我对Code First Reverse Engineer使用相同的方法,还是有任何自定义设置,如果你必须多次运行电动工具,因为我向数据库添加了一个新表,它不会覆盖对数据库的任何更改以前创建的现有模型.

这最终意味着我可以自己更改实际的模型类,而不是创建部分类.

可以在此处找到EF Powertools的参考:

http://blogs.msdn.com/b/adonet/archive/2012/04/09/ef-power-tools-beta-2-available.aspx

asp.net-mvc entity-framework ef-code-first

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

实体框架5 Fluent API - 配置单向关系

我不能为我的生活弄清楚这一点.MSDN上的文章不清楚,似乎已经过时了.我正在使用EF 5,我正在尝试为以下内容建立单向关系.所以这就是我到目前为止所拥有的.

public sealed class Capture {
    /// <summary>
    /// Get and Set Capture's Unique Identifier.
    /// </summary>
    public int Id { get; set; }

    /// <summary>
    /// Get and Set Capture's Operating System.
    /// </summary>
    public OperatingSystem OperatingSystem { get; set; }
}

public sealed class OperatingSystem {
    /// <summary>
    /// Operating System's Unique Identifier.
    /// </summary>
    public int Id { get; set; }
}

internal sealed class EntityCaptureConfiguration : EntityTypeConfiguration<Capture> {
    /// <summary>
    /// Create an Entity Capture …
Run Code Online (Sandbox Code Playgroud)

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

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

实体框架.加载子类属性的Quering父实体

有一个简单的域名..

public abstract class UserComment
{
    public string Text { get; set; }
}

public class BlogComment : UserComment
{
    public Blog Blog { get; set; }
}

public class PhotoComment : UserComment
{
    public Photo Photo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法查询UserComment类型的所有实体与属性博客和照片加载?

var comment = DbContext.Set<UserComment>()
    .Include(x => x.Blog) // will not compile
    .Include(x => x.Photo) // will not compile
    .FirstOrDefault();

if (comment is PhotoComment )
{
    string url = (comment as PhotoComment).Photo.Url;
}
if (comment is …
Run Code Online (Sandbox Code Playgroud)

c# linq-to-entities entity-framework ef-code-first

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

实体框架代码优先:查询多个导航属性而不加载到内存中

我想知道查询多对多关系的最佳方法,而无需先将所有关系对象加载到内存中.

例如,Category和Article有很多关系.这意味着我的Category类具有(延迟加载的)导航属性,如下所示:

class Category
{
     public long Id {get; set;}
     public ICollection<Articles> Articles {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

如果我只想选择可见的文章,我可以像这样查询导航属性:

category.Articles.Where(a => a.IsVisible)
Run Code Online (Sandbox Code Playgroud)

但据我所知,这将在执行IsVisible检查之前将所有相关文章加载到内存中.

是否可以查询相关文章而不将其加载到内存中,即作用于IQueryable而不是ICollection?如果这是一对多关系,那么我可以直接查询文章DbSet以实现我所追求的但是多对多的关系存储在sql的链接表中,这意味着我无法使用DbSet查询它.我是唯一一个手动编写原始sql来查询链接表的选项吗?

entity-framework ef-code-first entity-framework-4.3

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

使用AutoMapper映射后,Context不会更新加载的实体

在我的代码中我正在加载一个entity使用它id,然后使用并最终调用更新其内容.但不起作用!.但是当我手动设置属性时它会生效!怎么了 ?AutoMapperContext.SaveChanges

var entity = Context.MyEntities.Find(id);

entity = Mapper.Map<MyEntity>(viewModel);

Context.SaveChanges;
Run Code Online (Sandbox Code Playgroud)

但是这个有效:

var entity = Context.MyEntities.Find(id);

entity.SomeProp = viewModel.SomeProp;

Context.SaveChanges;
Run Code Online (Sandbox Code Playgroud)

c# entity-framework automapper ef-code-first

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

使用StartsWith进行过滤时,EF不使用SQL索引

以下LINQ查询过滤带StartsWith()谓词的行:

db.Pictures.Where(pic => pic.Filename.StartsWith(path)).Count();
Run Code Online (Sandbox Code Playgroud)

其中转换为以下SQL(来自SQL Server Profiler):

exec sp_executesql N'SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[Pictures] AS [Extent1]
    WHERE [Extent1].[Filename] LIKE @p__linq__0 ESCAPE N''~''
)  AS [GroupBy1]',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'10429\2\6\%'
Run Code Online (Sandbox Code Playgroud)

Filename列的类型为VARCHAR(255)并已编制索引.但是,由于N in,查询不使用索引ESCAPE N'~'.

在查询执行计划中,我可以看到一个警告:

表达式中的类型转换(CONVERT_IMPLICIT(NVARCHAR(255),[Extent1].[Filename],0))可能影响查询计划选择中的"CardinalityEstimate"

删除N时,查询运行正常(使用索引).

我该如何解决这个问题?

(一个明显的解决方案可能是将列的类型更改为NVARCHAR,但这似乎并不理想,因为我实际上不需要存储unicode数据)

sql-server entity-framework ef-code-first

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

实体框架5 - 无效的列名称 - 反向工程师代码优先

使用Entity Framework 5,Visual Studio 2010Entity Framework Power Tools(Beta 2)扩展.

这是我的数据库表结构:

数据库表结构

我使用了上述扩展的逆向工程师代码优先功能,它生成了POCO类和一些"映射"文件(不确定这是否是正式用法)和单个DbContext派生类.除了我接下来描述的更改之外,所有这些生成的类都是由电动工具生成的.

在Category.cs文件中,我添加了以下代码以帮助展平对象图:

private ICollection<Product> m_Products = null;
public ICollection<Product> Products
{
    get
    {
        if (m_Products == null)
        {
            m_Products = new List<Product>();
            foreach (var categoryProduct in CategoryProducts)
            {
                m_Products.Add(categoryProduct.Product);
            }
        }
        return m_Products;
    }
    set { m_Products = value; }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下异常,我知道必须与映射有关,但我不能完全弄清楚这一点.

Unhandled Exception: System.Data.EntityCommandExecutionException: An error occurred while 
executing the command definition. See the inner exception for details.
 ---> System.Data.SqlClient.SqlException: 
      Invalid …
Run Code Online (Sandbox Code Playgroud)

entity-framework visual-studio-2010 ef-code-first entity-framework-5

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