标签: entity-framework-ctp5

ASP.NET MVC中Controller.ReadFromRequest的替换是什么?

我正在尝试将项目从ASP.NET MVC预览3更新到预览5,似乎已从Controller类中删除了Controller.ReadFromRequest(字符串键).有没有人知道根据表单中的标识符检索信息的任何替代方法?

c# asp.net-mvc .net-3.5 entity-framework-ctp5

5
推荐指数
1
解决办法
939
查看次数

UnitOfWork实施

我已经能够实现一个很酷的工作单元来处理实体框架.

我想出了..

public class UnitOfWork : IUnitOfWork
    {
        private Database _database;
        private IDatabaseFactory _databaseFactory;

        private DbTransaction transaction;

        public UnitOfWork(IDatabaseFactory databaseFactory)
        {
            _databaseFactory = databaseFactory;
            _database = Database;

            transaction = _database.Database.Connection.BeginTransaction();
        }

        public Database Database
        {
            get { return _database ?? (_database = _databaseFactory.Get()); }
        }

        public void Dispose()
        {
            try
            {
                _database.SaveChanges();
                transaction.Commit();
            }
            catch (Exception ex)
            {
                transaction.Rollback();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

我很确定现在每个人都嫉妒这个工作单位.(开玩笑)

但是我在这个服务层有一点设计问题.

public class JournalService : IJournalService
    {
        IJournalRepository _journalRepository;

        public JournalService(IJournalRepository journalRepository)
        { 
            _journalRepository = journalRepository;
        } …
Run Code Online (Sandbox Code Playgroud)

.net entity-framework unit-of-work entity-framework-ctp5

5
推荐指数
1
解决办法
1712
查看次数

实体框架CTP5代码优先:使用另一个类的多个集合映射一个类

使用EF CTP5 Code-First我试图映射一个类模型,该模型在一个指向另一个类的类中包含多个集合.这是我的意思的一个例子:

public class Company
{
    public int CompanyId { get; set; }
    public IList<Person> FemaleEmployees { get; set; }
    public IList<Person> MaleEmployees { get; set; }
}

public class Person
{
    public int PersonId { get; set; }
    public Company Company { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我让数据库从这个模型创建DbContext而没有进一步的自定义,如下所示:

public class MyContext : DbContext
{
    public DbSet<Company> Companies { get; set; }
    public DbSet<Person> People { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

...然后我在SQL Server中得到两个表,一个Companies只有一CompanyId列的简单表和一个People包含以下列的表("FKRN"表示"外键关系名称",由SQL在SQL …

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

5
推荐指数
1
解决办法
1415
查看次数

实体框架CTP 5一对一映射

我有两张桌子:

需求

RequirementId - PK

夹具

FixtureId - PK

RequirementId - FK/NULLABLE /唯一约束

夹具只能有1个要求,其他夹具不应该能够引用相同的要求.夹具不是必须具有要求,它是可选的.

我所做的是,在Sql Server中,我在Fixture表的RequirementId列上放置了一个Unique约束.如何在Entity Framework CTP 5中为此设置映射?

还可以在每个实体上使用双向导航属性吗?

public class Fixture
{
    public int FixtureId { get; set; }
    public Requirement Requirement { get; set; }
}

public class Requirement
{
    public int RequirementId { get; set; }
    public Fixture Fixture { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

也许我错了,所以任何建议都会很棒.提前致谢

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

5
推荐指数
1
解决办法
2054
查看次数

基于抽象实体的急切加载嵌套导航问题(EF CTP5)

我的EF模型的一部分看起来像这样:

在此输入图像描述

摘要:

  • 位置有很多帖子
  • Post是一个抽象
  • 讨论得出帖子
  • 讨论有很多评论

现在,我正试图实现的查询:

获取有关位置ID 1234的信息,包括与这些讨论相关的任何讨论和评论.

我可以得到讨论和这样的评论:

var discussions = ctx.Posts
                     .OfType<Discussion>()
                     .Include(x => x.Comments)
                     .ToList();
Run Code Online (Sandbox Code Playgroud)

但我似乎无法根据位置实体上的帖子导航获取它.

我试过这个:

var locationWithDiscussionsAndComments = ctx
                    .Locations
                    .Include(x => x.Posts
                                   .OfType<Discussion>()
                                   .Select(y => y.Comments))
                    .SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

哪个编译,但我得到错误:

System.ArgumentException:包含路径表达式必须引用实体定义的属性,也可以引用嵌套属性或对Select的调用.参数名称:路径

有任何想法吗?我可能会从帖子中"倒退":

var locationWithDiscussionsAndComments = ctx
                   .Posts
                   .Include(x => x.Location)
                   .OfType<Discussion>()
                   .Include(x => x.Comments)
                   .Where(x => x.LocationId == 1234)
                   .Select(x => x.Location)
                   .ToList();
Run Code Online (Sandbox Code Playgroud)

但就我的存储库而言,这在毛发和语义上都是错误的(我不应该通过帖子库来获取有关位置的信息).

有任何想法吗?

编辑

因此,在对它进行更大的思考之后,我意识到这OfType<T>是一个过滤操作.据我们所知,EF不支持使用预先加载进行过滤.唯一的选择是检索所有内容,或使用匿名类型投影.

我无法检索所有内容,因为涉及的元数据太多了.所以我正在尝试匿名类型投影.

c# abstract-class eager-loading navigational-properties entity-framework-ctp5

5
推荐指数
1
解决办法
4372
查看次数

实体框架复杂类型自定义验证,停止验证递归

我们使用复杂类型来管理我们的可翻译字段,如下所示:

[ComplexType]
public class Translated
{
    [Required]
    public string NL { get; set; }

    [Required]
    public string EN { get; set; }

    [ScaffoldColumn(false)]
    public string TranslatedText
    {
        get
        {
           return Util.Translate(NL, EN); 
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我们要求字段存在.但在某些情况下,整个Translated字段是可选的,如:

public class Question
{
    ...

    [Optional(ErrorMessage="Foo")]
    public Translated Description { get; set; }

    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,似乎可以计算Optional属性,当它返回false时,结果不会执行任何操作.

class OptionalAttribute : ValidationAttribute 
{
    public override bool IsValid(object value)
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将可选属性放在非复杂类型上时,它按预期工作,错误消息将始终为Foo.

最终目标是在两种情况下允许描述为空,但是当填充其中一个字段时,错误当然应该传播.

停止验证递归会导致该字段是可选的,但是如果字段填充,它也会阻止字段的验证.

有关如何实现这一目标的任何想法?

entity-framework customvalidator entity-framework-ctp5 entity-framework-4.1

5
推荐指数
1
解决办法
1976
查看次数

在sql中插入小数会导致插入零数而不是零附近的小数

在从我的代码中插入一个像0.0001这样的浮点数到sql中,结果在数据库中是0.0000.这是我的表列的定义:

decimal(20,15) 
Run Code Online (Sandbox Code Playgroud)

这是类字段的定义:

public decimal Rate {get ; set; }
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

我正在使用EF Code第一种方法:

Class1 obj = new Class1();
obj.Rate = 0.000001;
ClassDbSet.Add(obj);
DbContext.SaveChange();
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-ctp5 sql-server-2012

5
推荐指数
1
解决办法
532
查看次数

EF CTP 5中没有Key属性

根据实体框架中的博客文章数据注释,应该有一个名为"Key"的列的属性,它允许您标记实体的主键.但是,我无法在.Net 3.5或.Net 4.0中找到它.

我错过了什么?我已经包含对EntityFramework.dll的引用,我已经检查了所有属性,System.ComponentModel.DataAnnotations但我无法找到它. 替代文字

我已将项目设置为.Net 4.0 full(非客户端配置文件).

有任何想法吗?

.net c# entity-framework-ctp5

4
推荐指数
2
解决办法
8039
查看次数

EF CTP5错误:对象名称无效

我在scottgu的博客上关于EF代码第一个CTP5的示例,但我得到了错误

System.Data.SqlClient.SqlException:无效的对象名称'dbo.Products'.

这是我得到的代码.

<add name="CTP5Context"
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|EFCTP5.mdf;User Instance=true"
     providerName="System.Data.SqlClient" />


public class CTP5Context : DbContext 
{
    public DbSet<Product> Products { get; set; }
}

public class Product
{
    public int Id { get; set; }
    public string ProductName { get; set; }
    public int Amount { get; set; }
}



var context = new CTP5Context();
        var products = context.Products;            

        return View(products);
Run Code Online (Sandbox Code Playgroud)

我有点无能为力我在博客中做了同样的事情,这不是我第一次使用EF(但是CTP5 tho),我是在忽视什么?

entity-framework-4 entity-framework-ctp5 asp.net-mvc-2

4
推荐指数
2
解决办法
4673
查看次数

代码优先 - 当我没有将父对象设置为EntityState.Modified时,如何保存ICollection?

如果我有以下课程:

public class Foo()
{
public int PropertyIWantUpdated {get; set;}
public int PropertyIDontWantUpdated (get; set}

public ICollection<Bar> Bars {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

保存到我的数据库时,而不是

context.Entry(thisFoo).State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)

我正在使用

context.Entry(thisFood).Property(tf => tf.PropertyIWantUpdated).IsModified = true;
Run Code Online (Sandbox Code Playgroud)

如何保存对Bars的更改?

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

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