Tag: ef fluent api

在EF 6中找不到HasOne

我是Entity Framework的新手,我正试图找出关系。 我找到了这段代码: class MyContext : DbContext { public DbSet Posts { get; set; } public DbSet Tags { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity() .HasKey(t => new { t.PostId, t.TagId }); modelBuilder.Entity() .HasOne(pt => pt.Post) .WithMany(p => p.PostTags) .HasForeignKey(pt => pt.PostId); modelBuilder.Entity() .HasOne(pt => pt.Tag) .WithMany(t => t.PostTags) .HasForeignKey(pt => […]

为最小int值设置约束

我正在使用Repository模式。 我有一个名为Product的实体,我想设置价格的最小值以避免零价格。 是否可以在EntitytypeConfiguration类中创建它? 我的产品配置类 public class ProductConfiguration : EntityTypeConfiguration { public PlanProductConfiguration(string schema = “dbo”) { ToTable(schema + “.Product”); HasKey(x => new { x.IdProduct }); Property(x => x.Price).HasColumnName(“flt_price”) .IsRequired() .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); } }

EF6 CodeFirst一对多MySQL外键约束失败

我正在从现有数据库到CodeFirst进行映射,我遇到了一对多关系的问题。 System.Data.Entity.Infrastructure.DbUpdateException:更新条目时发生错误。 有关详细信息,请参阅内部exception —> System.Data.Entity。 Core.UpdateException:更新条目时发生错误。 有关详细信息,请参阅内部exception —> MySql.Data.MySqlClient.MySqlException:无法添加或更新子行:外键约束失败 我有一个像这样的T_USER实体。 public partial class T_USER{ public T_USER(){ this.T_OBJECTS = new HashSet (); this.T_OBJECTS1 = new HashSet (); } [Key] public int ID { get; set; } public string Name { get; set; } public virtual ICollection T_OBJECTS { get; set; } public virtual ICollection T_OBJECTS1 { […]

使用Entity Framework Code First将SQL表主键定义为区分大小写

是否可以首先在entity framework代码中定义SQL区分大小写的主键? 我知道默认情况下,SQL在字符串方面不区分大小写,只是为了清楚我不想将整个数据库定义更改为区分大小写,只需要一个表列(主键)。 我从外部API获取数据,该API使用区分大小写的主键(’a’和’A’是不同的记录)发送数据,我知道我可以修改它们并在我的数据库中以不同方式保存它们,但这也需要我在我的代码中到处都是一致的。 这是绝对可能的,但我宁愿避免它。 理想情况下,我希望找到一种方法,通过entity framework将主键定义为区分大小写,而不是使用SQL查询 。 我会很感激任何建议,或者更好的方法来做到这一点。 更新 好吧,所以我几乎失去了对这种可能性的希望,现在当我尝试使用另一种方法时: public ovveride Up() { // drops the existing primary key named PK_dbo.Urls Sql(“ALTER TABLE dbo.Urls DROP CONSTRAINT [PK_dbo.Urls]”); // change the collation Sql(“ALTER TABLE dbo.Urls ALTER COLUMN Url VARCHAR(10) COLLATE SQL_Latin1_General_CP1_CS_AS NOT NULL”); // re-add the primary key to the Url column Sql(“ALTER TABLE […]

EF Fluent API多对多具有不同的ID字段名称

在这个问题: Ef Many To Many ,一个关于如何手动指定链接表的答案。 但我有一个稍微独特的情况(我肯定不是真的很独特)。 我的两个表都有一个Id字段。 EG: [dbo].[Account].[Id]和[dbo].[Person].[Id] 。 我的Code-First中的每个表都有以下OnModelCreating: modelBuilder.Entity.HasKey(x => x.Id); modelBuilder.Entity.HasKey(x => x.Id); 但我的[dbo].[AccountsToPersons]…表格有字段EG: [AccountId]和[PersonId] AccountsToPersons表不由代码中的类表示。 我显然已经有了一个现有的模型,但是我们使用EF Code-First Fluent API而不是从数据库更新模型。 那么如何更改此代码以使其与映射不同的ID列名称一起使用? public DbSet Persons { get; set; } public DbSet Accounts { get; set; } . . . modelBuilder.Entity() .HasMany(a => a.Persons) .WithMany() .Map(x => { x.MapLeftKey(“AccountId”); // <– Account.Id […]

在Entity Framework上为NULL值创建UNIQUE过滤索引

我正在尝试使用Entity Framework创建一个具有NULL值的UNIQUE过滤索引的表(例如,允许Null值重复)。 我正在使用Fluent API并拥有此实体属性: modelBuilder.Entity().Property(c => c.Barcode) .HasMaxLength(20) .IsRequired() .HasColumnAnnotation( IndexAnnotation.AnnotationName, new IndexAnnotation(new IndexAttribute(“IX_ClientBarcode”) { IsUnique = true })); 我发现SQL Server 2008允许对具有过滤空值的唯一列进行此操作: CREATE UNIQUE INDEX indexName ON tableName(columns) INCLUDE includeColumns WHERE columnName IS NOT NULL 这甚至可以实现吗? 因为我使用的是LocalDB。

映射到现有数据库表

我Entity Framework 4.1 code first使用Entity Framework 4.1 code first连接到现有的数据库。 我首先使用的表叫做Bank 。 我还有一个Bank class作为我的域模型。 这是我映射我的类和表的方式: public class HbfContext : DbContext { public DbSet Banks { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity().ToTable(“Bank”); } } 我的银行表: BankID INT BankName VARCHAR(50) 我的Bank类看起来像这样: public class Bank { public int Id { get; set; } public string […]

EF6.X中的EntityFramework代码第一个FluentAPI DefaultValue

如何使用EntityFramework Code First FluentAPI为bool属性设置默认值? 就像是: Property(l => l.PropertyFlag).HasColumnType(“bit”).DefaultValue(1);

使用HasColumnAnnotation可以实现多个索引?

它看起来像在Entity Framework 6.1中,它们添加了通过新的HasColumnAnnotation方法创建表索引的HasColumnAnnotation 。 我创建了一些辅助扩展来加速这个过程: public static class MappingExtensions { public static StringPropertyConfiguration HasIndex(this StringPropertyConfiguration config, bool isUnique = false) { return config.HasColumnAnnotation(“Index”, new IndexAnnotation(new IndexAttribute() { IsUnique = isUnique })); } public static StringPropertyConfiguration HasIndex(this StringPropertyConfiguration config, string name, int order = 1, bool isUnique = false) { return config.HasColumnAnnotation(“Index”, new IndexAnnotation(new IndexAttribute(name, order) […]

aspnet核心entity framework7自引用“作业”1到多表

我有一个包含工作的“工作”表。 事实上乔布斯并不总是一气呵成……你可以找到一份有很多访问的工作。 我打算将其表示为另一项工作,但通过自引用linkId链接回原始工作。 我无法使用流畅的API代表这一点。 它是一对多关系..一个工作可能有很多访问,因此一些linkId指向原始工作。 链接ID将返回原始作业ID。 它也是可选的,因为大多数工作可能一次性完成.. 我已经找到了这个,但很难将其他例子变成这个例子,因为很多它们是一对一的,而且那些给出一对多例子的例子似乎是使用不同的EF6。 我的工作表是: using System; namespace JobsLedger.Model.Entities { public class Job : IEntityBase { public int Id { get; set; } public string Model { get; set; } public string Serial { get; set; } public string ProblemDetails { get; set; } public string SolutionDetails { get; set; } […]