我是Entity Framework 5的新手。我们的团队正在使用Code First
工作流。
在开始我的主要问题之前, 让我先向您展示我已经尝试过的东西 ( 所有时间的最终评语:D
)。
public class MyDBContext : CDBContext
{
public MyDBContext() : base(connString) { }
public MyDBContext(string connStr) : base(connStr) { }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// removes some conventions
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
// ........
// model configurations which contains mappings
modelBuilder.Configurations.Add(new AccountConfiguration());
// ........
// calls base OnModelCreating
base.OnModelCreating(modelBuilder);
}
// list of all Entity
public DbSet<Account> Account { get; set; }
}
MyDBContext
是我创建的类,该类继承自CBDContext
,其中包含重写方法,该类也继承自DBContext
。我遇到的问题之一是实体框架无法处理字段唯一性。我已经在他们的站点上阅读了有关使用Fluent
API配置/映射属性和类型
的文章,但是找不到用于将属性设置为唯一的任何配置。
因此,为了将字段设置为唯一,我要做的是在创建过程中手动运行多个ALTER sql语句,
using (MyDBContext _context = new MyDBContext(connString))
{
if (_context.Database.CreateIfNotExists())
{
_context.Database.ExecuteSqlCommand("ALTER TABLE Account ADD CONSTRAINT UQ_Account_AccountNumber UNIQUE(AccountNumber)");
_context.Database.ExecuteSqlCommand("ALTER TABLE Account ADD CONSTRAINT UQ_Account_GUID UNIQUE(GUID)");
// .... more on this in the following lines ...
}
}
我的问题:
if (_context.Database.CreateIfNotExists())
某个可以覆盖的可用方法的某个位置?我真正想要的是if (_context.Database.CreateIfNotExists())
从使用状态寄存器中删除并将其放置在其他位置或内部,MyDBContext
以便我的代码看起来像这样,
using (MyDBContext _context = new MyDBContext(connString))
{
Account _acc = new Account()
// ...Account properties ...
_context.Account.Add(_acc);
_context.SaveChanges();
}
谢谢。
如果您不使用(或不能使用)EF迁移,则可以使用此答案中提到的自定义初始化程序。自定义初始化程序将Seed
在创建数据库后执行一个方法=仅在数据库不存在时执行一次。如果您需要逐步开发数据库初始化程序本身,将无济于事(这就是迁移的目的)。
问题内容: 我正在研究一个小型django项目,该项目稍后将部署在servlet容器中。但是,如果我使用cPython而不是Jython,开发速度会更快。因此,我想做的是测试我的代码是否在settiings.py中的cPython或Jython上运行,以便我可以告诉它使用适当的数据库驱动程序(postgresql_psycopg2或doj.backends.zxjdbc.postgresql)。有
问题内容: 简而言之,我需要能够将已编译的可执行文件粘贴到Java jar文件中,然后能够从Java运行它(可能通过)。 的 原因 ,是我想使用Java来包裹ImageMagick的可执行文件成分的图像处理弹性的Map Reduce任务。EMR只希望获取一个jar文件,因此我认为没有空间在旋转的数据节点上安装软件。 问题答案: jar中的可执行文件是一种资源,您可以通过Stream访问它,并将可执
问题内容: 我正在研究一个小型django项目,该项目稍后将部署在servlet容器中。但是,如果我使用cPython而不是Jython,开发速度会更快。因此,我想做的是测试我的代码是否在我的settiings.py中的cPython或Jython上运行,以便我可以告诉它使用适当的数据库驱动程序(postgresql_psycopg2或doj.backends.zxjdbc.postgresql)
问题内容: 我在jenkins中有一组构建作业,可以在3个构建节点中的任何一个中运行。它们都带有通用标签“ ubuntu_build”。每个节点都有许多执行程序,因此允许某些构建在计算机上并行执行。该安装程序运行正常,可以完成预期的工作,但我想对其进行改进。 3个构建节点具有不同的性能。第一个是第二个的两倍,第二个是第三个的两倍。(称它们为fast_node,regular_node,slow_n
问题内容: 现在我有了一些C源代码,我想在我的Java应用程序中使用它。我需要执行C源代码,并将结果返回到我的Java应用程序。与其将所有C源代码重写为Java,我如何在Java应用程序中重用C源代码? 问题答案: 看一下Java Native Interface 。 Java本机接口(JNI)是一种编程框架,它使Java虚拟机(JVM)中运行的Java代码能够被本机应用程序(特定于硬件和操作系统
问题内容: 正如标题所说。我想编写一个行为不同的脚本,具体取决于它是在控制台窗口中运行还是在IDLE中运行。是否只有在我可以检查的IDLE中运行时才存在的对象?环境变量? 我在Windows上使用的是Python 2.6.5和2.7。 编辑: 到目前为止给出的答案有效。 但是我正在寻找一种官方的方式来做到这一点,或者看起来像黑客一样。如果有人提出,我会接受的。否则,几天后,我会接受最早的答案。谢谢