标签: entity-framework-5

如何为Entity Framework 5定制多元化

由于我的数据库是使用德语表和列名设计的,因此实体框架的默认复数功能对我不起作用.

我已经找到了几个讨论这个问题的资源,但它们似乎都没有用.

我发现:有PluralisationService,我可以添加映射:

PluralizationService pluralizer =
      PluralizationService.CreateService(CultureInfo.GetCultureInfo("en-us"));
ICustomPluralizationMapping mapping = ps as ICustomPluralizationMapping;
mapping.AddWord("Tabelle", "Tabellen");
Run Code Online (Sandbox Code Playgroud)

但下一步是什么?我试过:

EntityModelSchemaGenerator generator = new EntityModelSchemaGenerator(container);
generator.PluralizationService = pluralizer;
generator.GenerateMetadata();
Run Code Online (Sandbox Code Playgroud)

并将它们都放在我的POCO T4模板中.但它引发了以下异常:

EntityContainer'ContainerName'不是商店EntityContainer.参数名称:StoreEntityContainer
at System.Data.Entity.Design.EntityModelSchemaGenerator.Initialize(...)
at Microsoft.VisualStudio.TextTemplating ... GeneratedTextTransformation.TransformText()

entity-framework poco pluralize entity-framework-4 entity-framework-5

9
推荐指数
1
解决办法
520
查看次数

实体框架5执行全表扫描

我有以下代码:

public List<anEntity> Get(int page, int pagesize, Func<anEntity, IComparable> orderby)
{            
    using (var ctx = new MyContext())
    {                
        return ctx.anEntity.OrderBy(orderby).Skip(pagesize * page).Take(pagesize).ToList();                    
    }           
}
Run Code Online (Sandbox Code Playgroud)

当我检查我的数据库配置文件(SqlServer 2012)时,我可以看到一个可怕的全表扫描,没有任何"TOP"子句.

有趣的部分:

如果我做类似的事情,但指定具体的顺序:

return ctx.anEntity.OrderBy(x => x.aField).Skip(pagesize * page).Take(pagesize).ToList();
Run Code Online (Sandbox Code Playgroud)

该配置文件显示了一个漂亮的"TOP"条款.

我想避免使用很多方法,每个方法都有一个"orderby"的可能性.任何提示都将非常感激.

c# entity-framework entity-framework-5

9
推荐指数
1
解决办法
736
查看次数

实体框架和泛型

我有几个独立的对象,每个对象都有一个共同对象的列表.例如,

public class Project 
{ 
   public IEnumerable<CommentEntry<Project>> Comments{get;set;}
}
public class Sample
{ 
   public IEnumerable<CommentEntry<Sample>> Comments{get;set;}
}
public class CommentEntry<T> where T: class
{ 
   public int TId {get;set;}
   public int CommentEntryId{get;set;}
   public DateTime TimeStamp{get;set;}
   public string Comment{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

使用Entity Framework 5的流畅api,我想要一个用于项目和请求的CommentEntry表.所以,这是我的映射代码:

modelBuilder.Entity<CommentEntry<Project>>()
            .Map(m =>
                {
                    m.ToTable("EngineeringProjectComments");
                });
        modelBuilder.Entity<CommentEntry<Request>>()
            .Map(m =>
            {
                m.ToTable("SampleRequestComments");
            });
Run Code Online (Sandbox Code Playgroud)

当我尝试迁移时,遇到以下消息:

未映射CommentEntry`1 [Project]'类型.使用Ignore方法或NotMappedAttribute数据批注检查未明确排除类型.验证类型是否已定义为类,不是原始类,嵌套类还是通用类,并且不从EntityObject继承.

我可以看到我在这种情况下尝试使用泛型的明显缺陷.但是,任何人都可以建议我的数据库表结构,类代码或映射代码的替代方案,这将允许我在许多类之间共享单个泛型类型并具有独立的表吗?

c# generics fluent-interface entity-framework-5

9
推荐指数
1
解决办法
4178
查看次数

如何在EntityFramework 5中使用Transaction?

我想同时转换一些表.如果一个人不成功,必须全部回滚.

像这样的东西:

ctx.Database.ExecuteSqlCommand("truncate table tb_expensesall");
ctx.Database.ExecuteSqlCommand("truncate table tb_wholesale");
ctx.Database.ExecuteSqlCommand("truncate table tb_singlesale");
ctx.Database.ExecuteSqlCommand("truncate table tb_purchase");
Run Code Online (Sandbox Code Playgroud)

但问题是,我不知道如何使用交易.

我试着这个:

using (gasstationEntities ctx = new gasstationEntities(Resources.CONS))
{
    ctx.Database.Connection.Open();
    DbTransaction tr = ctx.Database.Connection.BeginTransaction();

    try
    {
        ctx.Database.ExecuteSqlCommand("truncate table tb_expensesall");
        ctx.Database.ExecuteSqlCommand("truncate table tb_wholesale");
        ctx.Database.ExecuteSqlCommand("truncate table tb_singlesale");
        ctx.Database.ExecuteSqlCommand("truncate table tb_purchase");
        //commit the transaction
        tr.Commit();
        new MessageWindow(this, Resources.GetString("Warn"), Resources.GetString("DeleteSuccess"));
    }
    catch (Exception ex)
    {
        //return
        tr.Rollback();
    }
    //close
    ctx.Database.Connection.Close();
}
Run Code Online (Sandbox Code Playgroud)

这里的问题: tr.Commit(); 和Exception告诉我:

{System.InvalidOperationException: Connection must be valid and open to rollback transaction
Run Code Online (Sandbox Code Playgroud)

tr.Rollback();抛出异常.例外是:

{System.InvalidOperationException: Connection must …
Run Code Online (Sandbox Code Playgroud)

c# mysql entity-framework entity-framework-5 visual-studio-2012

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

如何在实体框架代码中首先映射不同数据类型的列和实体

我正在使用Entity Framework 5 - Code.

我有一个数据库,我连接到已经存在一段时间了(我没有创建它).有一张叫做的桌子T_Customers.它包含所有客户的列表.它具有以下结构(仅部分显示):

Customer_id | numeric (5, 0) | auto increment | not null (not set as primary key)
FName | varchar(50) | not null
LName | varchar(50) | not null
Run Code Online (Sandbox Code Playgroud)

我的Customer班级:

public class Customer : IEntity
{
     public int Id { get; set; }

     public string FirstName { get; set; }

     public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的IEntity界面:

public interface IEntity
{
     int Id { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework entity-framework-5

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

如何覆盖部分类属性

我有一个部分课程,我想做类似以下的事情:

[MetadataType(typeof(UserMetaData))]
public partial class Person
{
    public override string PrivateData
    {
        get
        {
            return customDecrypt(base.PrivateData);
        }
        set
        {
            base.PrivateData = customEncrypt(value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是上面的方法不起作用.

有没有办法覆盖基本实体框架类的属性,以允许自定义getter/setter?

c# asp.net-mvc-4 entity-framework-5

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

将字段映射到EntityFramework 5 Code First中的枚举

所以,我有一个课程如下:

public class Message {

        public enum MessageType {
            Text = 0,
            Audio = 1,
            Image = 2
        }

        public int Uid { get; set; }
        public MessageType Type { get; set; }
        public String Text { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

如您所见,Type字段是枚举.我将数据匹配到此类的映射定义如下:

public class MessagesMap : EntityTypeConfiguration<Message> {

    public MessagesMap() {

        // Primary Key
        this.HasKey(t => t.Uid);

        // Properties
        this.Property(t => t.Text)
            .HasMaxLength(1000);

        // Table & Column Mappings
        this.ToTable("wc_messages");
        this.Property(t => t.Uid).HasColumnName("UID");
        this.Property(t => t.Type).HasColumnName("Type");
        this.Property(t => t.Text).HasColumnName("Text");

    }
} …
Run Code Online (Sandbox Code Playgroud)

entity-framework-5

9
推荐指数
1
解决办法
7121
查看次数

映射多对多关系,没有导航属性

是否可以映射多对多的关系而不在其中一端有导航属性?例如,我有一些小部件和一些可以为特定小部件加注星标的用户.我希望能够看到用户关注哪些小部件,但我并不真正关心所有已经为某个特定小部件加星标的用户

Widget.cs

public int Id { get; set; }
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)

User.cs

public int Id { get; set; }
public string Username { get; set; }
public ICollection<Widget> StarredWidgets { get; set; }
Run Code Online (Sandbox Code Playgroud)

通过此设置,EF将生成从窗口小部件到用户的一对多关系.但是,它需要是多对多的.我知道我可以添加public ICollection<User> UsersWidget.cs,只是看是否有解决这个另一种方式.

ef-code-first entity-framework-5

9
推荐指数
1
解决办法
5026
查看次数

如何使用Entity Framework在Sql Server Express中获取下一个序列号?

现在的SQL Server 2012(包括SQL Server Express的2012)的SEQUENCE功能,就像Oracle作为解释在这里,这里这里.

我可以这样下一个sequence,SELECT NEXT VALUE FOR SeqName

但是我如何使用Entity Framework 5从我的代码中做到这一点?

entity-framework sql-server-2012 entity-framework-5

9
推荐指数
1
解决办法
6567
查看次数

实体框架 - 通过更改外键来更新关系

我有以下两个模型和DbContext:

    public class TestDbContext : DbContext
    {
        public IDbSet<Person> People { get; set; }
        public IDbSet<Car> Cars { get; set; }
    }

    public class Person
    {
        public Person()
        {
            ID = Guid.NewGuid();
        }

        public Guid ID { get; set; }
        public string Name { get; set; }
        public virtual List<Car> Cars { get; set; }
    }

    public class Car
    {
        public Car()
        {
           ID = Guid.NewGuid();
        }

        public Guid ID { get; set; }
        public string Name { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# orm entity-framework relational-database entity-framework-5

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