Tag: 代码优先

代码首先在西里尔语中播种数据

我使用种子方法来填充数据库。 一些对象具有西里尔字母的属性。 例: context.Wines.AddOrUpdate(new Wine() { Id = 1, Name = “Шардоне”, etc…………………………………. 这些对象在数据库中正确创建,但是当我在MS SQL管理工作室中检查数据库而不是葡萄酒的名称为“Шардоне”时,它显示为“Øàðäîíå”。 奇怪的是,当我在Startup类中创建葡萄酒时,如下所示: var db = new WineSystemDbContext(); var ShardoneWine = new Wine { Name = “Шардоне}; db.Wines.Add(ShardoneWine); 一切都在数据库中以西里尔文显示。 你知道可能导致这种情况的原因吗?

entity frameworkCTP4代码优先:映射受保护的属性

我想在模型上使用延迟加载集合,但我希望通过单独的方法完成添加/删除function。 所以这样的事情: class Model { protected virtual ICollection _somethings { get; set; } public IEnumerable Somethings { get { return _somethings; } } public void AddSomething(Something thingToAdd) { /* logic */ _somethings.Add(thingToAdd); } } 我无法弄清楚如何为此配置映射。 我研究了使用配置类:EntityConfiguration。 但由于该属性受到保护,我无法弄清楚如何在其上设置配置。 有没有办法完成我在这里要做的事情?

代码首先导致所需的关系是可选的?

public class Client { public Int32 ClientID { get; set; } public virtual ICollection InquiryManufacturers { get; set; } public virtual ICollection Products { get; set; } public virtual ICollection InquiryRetailers { get; set; } } public class Product { public Int32 ProductID { get; set; } public Int32 ClientID { get; set; } public […]

多重inheritance(可能是抽象类?)C#entity framework

最近几周,我一直致力于使用Visual Studio 2015在c#上基于Entity Framework 6(Code-First)开发数据库。 我目前正在研究inheritance提供的所有选项。 此时并遵循数据库的标准,我应该使用主键实现多重inheritance。 这意味着什么? 这意味着我应该实现一个inheritance自另一个类的类,并拥有自己的PK来识别他与父类不同的类。 此时我可以用TPC实现它,使父类抽象而不是在父类上定义任何PK。 这是此时代码的示例(这有效,我已对其进行了测试) public abstract class Person { public string Name { get; set; } public string LastName { get; set; } } [Table(“Students”)] public class Student : Person { [Key]public int Id_student { get; set; } public string code_s { get; set; } public virtual ICollection […]

当列不是主键时,与EF Code First的一对一或一对一关系

我正在开发一个Entity Framework 6.1.3 Code First库,C#和.NET Framework 4.5.1。 我有一对一或零关系的问题(或者可能是另一种关系)。 我有两个表, Codes和HelperCodes ,代码可能有零个或一个帮助程序代码。 这是用于创建这两个表及其关系的sql脚本: CREATE TABLE [dbo].[Code] ( [Id] NVARCHAR(20) NOT NULL, [Level] TINYINT NOT NULL, [CommissioningFlag] TINYINT NOT NULL, [SentToRanger] BIT NOT NULL DEFAULT 0, [LastChange] NVARCHAR(50) NOT NULL, [UserName] NVARCHAR(50) NOT NULL, [Source] NVARCHAR(50) NOT NULL, [Reason] NVARCHAR(200) NULL, [HelperCodeId] NVARCHAR(20) NULL, CONSTRAINT [PK_Code] PRIMARY […]

EF代码首先列出而不创建表

我正在用一个实体创建一个非常简单的EF4代码第一个项目。 public class Activity { public Guid Id { get; set; } public string Description { get; set; } public List DateDone { get; set; } public Activity() { if(DateDone==null) DateDone = new List(); } } 我重建我的项目,然后运行MVC3应用程序并生成数据库(确认,我已添加和删除列),我的数据是种子(当我修改种子数据时它在屏幕上更改) 我能够: var activity = db.Activities.Find(id); activity.DateDone = DateTime.Now; db.SaveChanges(); 但是数据没有保存。 我检查了数据库,因为只有一个表(Activity),它有所有相应的字段。 我希望它应该有第二个表,ActivityDateDone有两个字段,ActivityGuid和DateDone。 我在做这项工作时失踪了什么?

如何将枚举值保存到数据库?

例如: namespace PizzaSoftware.Data { public class User { public string Username { get; set; } public string Password { get; set; } public Permission PermissionType { get; set; } } public enum Permission { Basic, Administrator } } 如果我使用Entity-Framework的CodeFirst,我该如何保存这个值? 这适用于Windows窗体,桌面应用程序。 谢谢!

用MVC3创建的第二个数据库,如何防范?

我对MVC 3很新,我遇到了Code First方法的问题。 我创建了2个模型,一个上下文,视图等,一切都很完美(能够添加,删除等) 但是当我签入Microsoft SQL Management Studio时,我看到了2个数据库。 其中一个是我在web.config中要求的那个。 这个只包含成员资格表 第二个有一个奇怪的名字:“RecettesMaison.DB.RecettesMaisonContext”。 它是包含生成的表的那个… 我想知道这个名字的来源,我怎么能这样做所有生成的表只用我指定的名称进入我的connectionstring。 我只想要一个数据库。 我确定它只是上下文中的一个标签,但我无法在谷歌上找到这些信息。 编辑:在一个坚果,我希望我的数据库继续使用DropCreateDatabaseIfModelChanges但我希望它创建具有在连接字符串中指定的名称的数据库,而不是这种情况(它使用命名空间创建一个名称和数据库上下文的名称) 谢谢!

没有子导航属性的EF一对多外键

使用代码优先的entity framework和.NET 4,我试图在父母与子女之间建立一对多的关系: public class Parent { [Key] public int ParentId { get; set; } [Required] public string ParentName { get; set; } public IEnumerable Children { get; set; } } public class Child { [Key] public int ChildId { get; set; } [ForeignKey] public int ParentId { get; set; } [Required] public string ChildName […]

如何首先使用代码将列添加到链接表

我有一个与Subject实体具有多对多关系的ResearchDatabase实体。 即,研究数据库属于一个或多个主题类别,主题类别包含一个或多个研究数据库。 在我的ResearchDatabaseConfiguration文件中,我有以下映射: HasMany(rd => rd.Subjects) .WithMany(s => s.ResearchDatabases) .Map(m => { m.MapLeftKey( “DatabaseId”); m.MapRightKey( “SubjectId”); m.ToTable( “DatabaseSubjects”); }); 好的,没问题。 作品。 创建一个链接表。 现在我收到了一个新的规范。 每个主题的研究数据库的排序将按字母顺序与最相关的(由用户认为)分开,接着是第二组’如果你没找到它,也试试这些’数据库,也按字母顺序排列。 所以,基本上,我需要另一列来表示数据库是在第一组还是第二组。 类似IsPrimary列的东西,或类似于链接表本身内容的东西。 我希望这是有道理的。 但是,如何在从上面的映射代码创建的链接表中添加一个额外的列?