标签: entity-framework-ctp5

EntityFramework CTP5 DbContext T4模板"虚拟"关键字

CTP5附带的DbContext T4模板没有关联修正,并且并非所有属性都标记为虚拟.这是否意味着它与上下文断开连接时不支持ChangeTracking?首先,它是否支持ChangeTracking,即使在被Context(通过动态代理)跟踪时也是如此?我发现变更跟踪的要求是所有属性都应标记为虚拟.

与EF4 POCO生成器相比,我们是否正在使用DbContext生成器丢失任何功能?

非常感谢任何回应.

entity-framework entity-framework-ctp5

22
推荐指数
1
解决办法
1448
查看次数

实体框架:使用CodeFirst设置删除规则

我正在使用EF4 CTP 5,CodeFirst.

请先看我的课程:

public class Guest
{
        [Key]
        public Guid GuestID { get; set; }

        public Language PreferredLanguage { get; set; }
        public Guid? LanguageID { get; set; }
}

public class Language
{
        [Key]
        public Guid LanguageID { get; set; }

        [Required(ErrorMessage = "Enter language name")]
        [StringLength(50, ErrorMessage = "Language name is too long")]
        public string LanguageName { get; set; } // in origine language
}
Run Code Online (Sandbox Code Playgroud)

我的目标是为访客语言关系设置一定的"删除规则".删除语言时,我不想删除相应的guest虚拟机(因此级联删除).相反,我希望客人的LanguageID为"Set NULL".

我希望流利的API在这里支持我.但我找不到任何有用的东西.WillCascadeOnDelete(bool),它不提供我需要的选项.我错过了什么吗?或者这只是在CTP 5中没有实现?

谢谢你的帮助!

cascading-deletes entity-framework-4 entity-framework-ctp5

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

实体框架代码优先:如何在两个表之间创建一对多和一对一的关系?

这是我的模型:

public class Customer
{
    public int ID { get; set; }

    public int MailingAddressID { get; set; }
    public virtual Address MailingAddress { get; set; }

    public virtual ICollection<Address> Addresses { get; set; }
}

public class Address
{
    public int ID { get; set; }

    public int CustomerID { get; set; }
    public virtual Customer Customer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

客户可以拥有任意数量的地址,但这些地址中只有一个可以是邮寄地址.

如果我只使用一个,我可以得到One to One关系,One to Many工作得很好,但是当我尝试介绍两者时,我在Addresses表上获得了多个CustomerID键(CustomerID1,CustomerID2,CustomerID3).我真的把头发撕成了这个.

为了映射一对一的关系,我使用这里描述的方法http://weblogs.asp.net/manavi/archive/2011/01/23/associations-in-ef-code-first-ctp5-part- 3,一到一个外键,associations.aspx

c# entity-framework entity-framework-ctp5

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

我是否可以使用Entity Framework 4 CTP5访问TPH映射中的鉴别器值

使用Entity Framework 4 CTP5 Code First和本例

是否可以访问鉴别器值?

我想在投影中使用它

context.BillingDetails.Select(x => new { Number = x.Number, DiscrimitatorValue = /* how do I get the discriminator value? */ });
Run Code Online (Sandbox Code Playgroud)

这篇文章我明白鉴别器不能映射到属性,但有没有其他方式访问它?

code-first entity-framework-4 entity-framework-ctp5

14
推荐指数
4
解决办法
8435
查看次数

带有MVC3和EF4 CTP5w的JSON序列化的循环引用异常

当我尝试序列化通过EF4 CTP5返回的对象时,我遇到循环引用问题.我使用代码第一种方法和简单的poco为我的模型.

我已经将[ScriptIgnore]属性添加到任何提供对对象的反向引用的属性,并且令人烦恼的是,如果我手动实例化poco,它们似乎工作正常,即它们串行化为JSON,并且确认了scriptignore属性.但是,当我尝试序列化从DAL返回的对象时,我得到循环引用异常"序列化'System.Data.Entity.DynamicProxies.xxxx'类型的对象时检测到循环引用"

我已经尝试了几种方法来检索数据,但他们都遇到了这个错误:

    public JsonResult GetTimeSlot(int id) {
        TimeSlotDao tsDao = new TimeSlotDao();
        TimeSlot ts = tsDao.GetById(id);
        return Json(ts);
    }
Run Code Online (Sandbox Code Playgroud)

下面的方法效果稍好,而不是时间段动态代理对象导致循环引用其为约会对象.

    public JsonResult GetTimeSlot(int id) {
        TimeSlotDao tsDao = new TimeSlotDao();
            var ts = from t in tsDao.GetQueryable()
                 where t.Id == id
                 select new {t.Id, t.StartTime, t.Available, t.Appointment};
        return Json(ts);
    }
Run Code Online (Sandbox Code Playgroud)

这个问题的任何想法或解决方案?

更新 我希望尽可能使用开箱即用的序列化器,尽管Json.Net通过nuget可以替代我希望它可以像我预期的那样使用它...

c# asp.net entity-framework-4 entity-framework-ctp5 asp.net-mvc-3

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

EF4 Code First使表名称为单数

我正在使用单数表名称的标准.默认情况下,EF4 Code First具有复数表名.我已经把代码覆盖了这个约定,但似乎没有用.

使用部分:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Data.Entity;
using System.Data.Entity.Database;
using System.Data.Entity.ModelConfiguration;
using System.Data.Entity.ModelConfiguration.Conventions.Edm;
Run Code Online (Sandbox Code Playgroud)

数据背景:

public class SiteDataContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<BlogFeedback> BlogFeedbacks { get; set; }
        public DbSet<BlogCategory> BlogCategories { get; set; }

        // Twist our database
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove<PluralizingEntitySetNameConvention>();
            base.OnModelCreating(modelBuilder);
        }
    }
Run Code Online (Sandbox Code Playgroud)

创建的表:

  • 博客
  • BlogFeedbacks
  • BlogCategories

因为约定覆盖(以及我需要的)应该是:

  • 博客
  • BlogFeedback
  • BlogCategory

任何人都知道为什么覆盖线不起作用?非常感谢.

entity-framework-4 ef-code-first entity-framework-ctp5

13
推荐指数
1
解决办法
4620
查看次数

实体框架5 - 无法加载文件或程序集EntityFramework,版本= 5.0.0.0

我正在尝试将Entity Framework 5用于我的项目,但我似乎在安装程序集时遇到了一些问题.因为我最初使用nuget安装了这个,所以我不确定我需要做什么才能使它按照我的预期工作.有什么帮助我需要做些什么来解决这个问题吗?

*System.IO.FileNotFoundException:无法加载文件或程序集EntityFramework,Version = 5.0.0.0,Culture = Neutral,PublicKeyToken = b77a5c561934e089'或其中一个依赖项系统找不到指定的文件.WRN:程序集绑定日志记录已关闭.要启用程序集绑定失败日志记录,请设置注册值...*

通过使用融合日志,我得到了这个

*** Assembly Binder Log Entry  (7/17/2012 @ 9:29:09 PM) ***

The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.

Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll
Running under executable  C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 11.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\vstest.executionengine.x86.exe
--- A detailed error log follows. 

=== Pre-bind state information ===
LOG: User = WORKALOT\Tokorie
LOG: DisplayName = Budget.Data, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
 (Fully-specified)
LOG: Appbase = file:///C:/Development/Summer2012BudgetApp/Budget.Service.Test/bin/Release
LOG: Initial …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-ctp5

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

如何在EF LINQ中连接表

当我尝试加入表格时

var query =
    from foo in db.Foos
    from bar in db.Bars
    where foo.ID == bar.FooID
    where foo.ID == 45
    select bar;


query.toArray()
Run Code Online (Sandbox Code Playgroud)

我收到这样的错误

Unable to create a constant value of type 'Bar'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.
Run Code Online (Sandbox Code Playgroud)

linq join entity-framework-ctp5

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

实体框架4 - 在持久性不知情的上下文中使用CTP5(代码优先)映射非公共属性

我知道这个问题已经有了解决方案(例如这个问题),但是我真的无法将映射逻辑附加到域(POCO类)所在的同一个程序集中.

还有其他方法吗?

我找到了这篇不错的博文,但我无法让它发挥作用.这是模型:

public class Institute
{
    /**
        Code omitted
    **/

    protected virtual ICollection<InstituteText> InnerInstituteTexts { get; set; }

    private InstituteTextSet _TextSets;

    public InstituteTextSet Texts 
    {
        get 
        {
            if (_TextSets == null)
                _TextSets = new InstituteTextSet(InnerInstituteTexts);

            return _TextSets;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

映射代码:

var instituteTextExpression = ObjectAccessor<Institute>.CreateExpression<ICollection<InstituteText>>("InnerInstituteTexts");

institute.HasMany(instituteTextExpression)
    .WithRequired()
    .HasForeignKey(t => t.InstituteId);
Run Code Online (Sandbox Code Playgroud)

其中CreateExpression定义为:

public static Expression<Func<T, TResult>> CreateExpression<TResult>(string propertyOrFieldName)
{
    ParameterExpression param = Expression.Parameter(typeof(T), "propertyOrFieldContainer");
    Expression body = Expression.PropertyOrField(param, propertyOrFieldName);
    LambdaExpression lambda = Expression.Lambda(typeof(Func<T, TResult>), body, param); …
Run Code Online (Sandbox Code Playgroud)

code-first entity-framework-4 ef-code-first entity-framework-ctp5 entity-framework-4.1

12
推荐指数
1
解决办法
2608
查看次数

实体框架代码优先 - 更改表列整理

我正在使用Entity Framework CTP5和Code First.我需要更改SQL Server中特定列的排序规则.我相信默认排序规则是SQL_Latin1_General_CP1_CI_AS,但我需要将此列匹配更改为SQL_Latin1_General_CP1_CS_AS(区分大小写).

有没有办法在Code First中使用ModelBuilder来更改特定的列排序规则?

BarDev

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

12
推荐指数
1
解决办法
6879
查看次数