Tag: ef code first

从生成的表中检索数据时,对象名称“dbo.TableName”无效

我首先使用实体​​框架代码来创建我的表。 请注意 – 创建表而不是数据库,因为我正在处理托管环境,并且我没有允许创建数据库的用户。 提交数据库更新工作正常,但检索数据会产生exception: exception详细信息:System.Data.SqlClient.SqlException:无效的对象名称’dbo.EventHosts’。 我读过它发生了,因为我没有使用EF Code First来创建数据库。 那很好,但我如何优雅地解决这个问题呢? 所有生成的表都没有像dbo这样的前缀。 像这样的解决方案不起作用,并且根本不优雅: [Table(“EventHosts”, Schema = “”)]

当使用基类和私有setter时,关键组件“Id”不是“TypeName”类型的声明属性

我想为实体使用抽象基类,它不映射到任何表: public abstract class Entity { public virtual int Id { get; private set; } } 由于Id将自动增加,我不想允许从外部更改此属性。 因此,它的二传手是private 。 这是一个示例实体类型: public class Order : Entity { public virtual string Customer { get; set; } } …配置类型: public class EntityConfiguration : EntityTypeConfiguration where TEntity : Entity { public EntityConfiguration() { HasKey(o => o.Id); Property(o => o.Id).HasColumnName(“id”).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); […]

EF代码优先:插入多对多

post可以有很多主题。 可以将主题分配给许多post。 添加从主题列表中选择的两个主题的post时,还会将两个NULL主题插入到我的主题表中。 见Id=34和35 。 我做错了什么? 不应该改变主题。 我正在添加一篇新post并从固定数量的主题中选择主题(下拉列表)。 它在PostTopics表(PostID,TopicID)中被跟踪。 主题表: Id TopicName TopicDesc 31 Sports Sports 32 Game Game 33 Politics Politics 34 NULL NULL 35 NULL NULL TopicPosts表: Topic_Id Post_Id 34 11 35 11 public class Post { public int Id { get; set; } public int UserId { get; set; } public virtual […]

为什么没有等同于WillCascadeOnDelete的更新?

当你在EF代码中设置一个:多个关系时,你可以选择它是否应该像删除一样级联: modelBuilder.Entity() .HasRequired(asmt => asmt.CreatedByUser) .WithMany(usr => usr.Assessments) .HasForeignKey(asmt => asmt.CreatedByUserId) .WillCascadeOnDelete(true); 这转换为外键定义的SQL ON DELETE CASCADE部分,即。 ALTER TABLE [dbo].[Assessment] WITH CHECK ADD CONSTRAINT [FK_dbo.Assessment_dbo.User_CreatedById] FOREIGN KEY([CreatedById]) REFERENCES [dbo].[User] ([UserId]) ON DELETE CASCADE GO 但是,Fluent API中似乎没有类似的方法允许您控制ON UPDATE CASCADE的值,即。 像.WillCascadeOnUpdate()这样的东西。 为什么不?

如何在Entity Framework Code First中删除表?

我正在使用Entity Framework和Auto Migrations。 因此,当我向Context添加新模型时,我的数据库会更新并创建新表。 我想要做的是反过来,完全从数据库中删除表。 但是,从Context类中删除定义不起作用。 public class CompanyContext : DbContext { public DbSet Permissions { get; set; } public DbSet Companies { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); } } 例如,我想从数据库中删除Company表。 为此,我从CompanyContext类中删除Companies属性。 但是,它不起作用。 如果可能,在EF中删除表并使用自动迁移的正确方法是什么?

EF5不会创建枚举列

我有这样的模型: namespace Ad.NegCred.Data.Model { public enum DataKind { F, //Takibe alınıp henüz tahsil edilmeyen ferdi kredi bildirimi FA, //Aynı dönemde takibe alınan ve tahsil edilen ferdi kredi bildirimi FF, //daha önceki dönemlerde takibe alındığı bildirilmiş ferdi kredi tahsil bildirimi K, //Takibe alınıp henüz tahsil edilmeyan kredi kartı KA, //Aynı dönemde takibe alınan ve tahsil edilen […]

entity framework – Fluent APi – 使用2 FK创建表格

我有这个产品类,其中包含相关产品列表。 例如: 产品= StarWar AssociatedProducts =第五集:帝国反击,第六集:绝地归来,第七集:原力觉醒 但EF使用一些额外的列生成数据库。 这是我的产品类别: public class Product { public int Id { get; set; } public string Name { get; set; } public string ShortDescription { get; set; } public string FullDescription { get; set; } public decimal UnitPrice { get; set; } …… public virtual ICollection AssociatedProducts { get; set; […]

主键冲突:使用EF Code Firstinheritance

我有以下EF代码的第一个代码。 我收到以下exception: ‘GiftCouponPayment’不包含标识列。 表已在数据库中成功创建。 但是,我怎样才能摆脱这种exception呢? 另外,这个例外的原因是什么? 注意:我可以使用任何表模式,因为域模型(首先使用代码描述)被保留(并且可以查询数据)。 继续此exception后,还有另一个例外,如下所示: 保存不公开其关系的外键属性的实体时发生错误。 EntityEntries属性将返回null,因为无法将单个实体标识为exception的来源。 通过在实体类型中公开外键属性,可以更轻松地在保存时处理exception。 有关详细信息,请参阅InnerException。 {“违反PRIMARY KEY约束’PK_dbo.PaymentComponent’。无法在对象’dbo.PaymentComponent’中插入重复键。\ r \ n语句已终止。”} 参考 : entity framework:将表拆分为多个表 注意 :生成的数据库模式如下所示。 码: public class MyInitializer : CreateDatabaseIfNotExists { //Only one identity column can be created per table. protected override void Seed(NerdDinners context) { //context.Database.ExecuteSqlCommand(“CREATE UNIQUE INDEX IX_Payment_PayedTime ON Payment (PayedTime)”); context.Database.ExecuteSqlCommand(“DBCC CHECKIDENT (‘Payment’, […]

如何在entity framework代码中首先为几个表生成标识种子值

我见过这个和这个 。 我只想为我的代码优先(EF6.1)表的ID列的起始值设定种子。 现在我可以做到这一点 public class CustomInitializer : CreateDatabaseIfNotExists { protected override void Seed(FormsDbContext context) { context.Database.ExecuteSqlCommand(“DBCC CHECKIDENT (‘MyTable’, RESEED, 1000)”); } } 但是因为我有很多很多桌子,所以我觉得它很奇怪(而且感觉差不多)我必须为所有这些重复上述线路。 我无法通过流畅的配置找到任何方法。 这是种子的正确方法吗? 谢谢

如果我们使用具有代码优先方法的Entity框架,是否可以在给定路径上创建数据库(Sql Server compact)?

我对Entity框架有点困惑,我想使用代码优先方法; 事实上,我想写一下我的数据库表是如何通过类定义组成的。 主要的问题是我需要创建一个数据库(或打开它),通过选择它的路径(用户可以选择打开哪个数据库,并可以根据需要创建新的数据库)。 我已经选择了Sql server compact来实现这一点,但是我仍然不明白如何使用代码优先方法来处理这种情况,因为我不明白如何选择应该使用代码优先方法创建数据库的位置,如果是可能。 任何人都可以解释我做错了什么,并建议一个不同的路线,如果有的话? 谢谢