我想为插入和更新某些EF对象的事件添加一些逻辑.我有一个带有category对象的MVC应用程序,它有一个属性,它是name属性的一个slugified版本.
public class Category
{
public string Name { get; set; }
public string UrlName{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想仅在插入和更新事件上设置UrlName属性,因为我的slugify逻辑非常精细.
我知道我可以在上下文本身的SaveChanges()函数中添加一些逻辑,但我更愿意将代码放在实体本身附近.
有没有办法首先使用EF代码完成这样的事情?
我在我的项目中为Framework 4.0安装了Entity Framework 5.0 RC.但是当我尝试从Views中获取数据时,我得到了错误.EF尝试为此实体创建表.
我想在开始我的项目之前我应该想到这一点,但我已经使用代码优先方法成功构建并测试了一个迷你应用程序,我准备将其部署到生产Web服务器.
我已将文件夹移动到我的登台服务器,一切正常.我很好奇是否有建议的部署策略?
如果我对应用程序进行了更改,我不希望在重新启动应用程序时丢失所有数据.
我应该从代码优先项目生成数据库脚本,然后将其移动到我的服务器吗?
任何提示和指南链接都很有用.
谢谢.
我在这里看到的答案是ObjectContext.使用DbContext时是否有确定实体主键名称的属性?
啊..其中一个我希望实体框架是开源的!我可以从.Find方法收集这个主键名称信息:-)
我已经设置了一个系统,我采用了模型第一种方法,因为它对我来说更具逻辑意义.现在,即使我在模型中有一些变化,我现在所做的是 -
问题:主要问题是真的很乏味,因为我是从本地系统进行的,连接到我的prod数据库非常慢,有时我的视觉工作室也会崩溃.有没有更清洁的方法来做到这一点?哪个更自动化,以至于我的笔记本电脑对生产实例上的数据库迁移不负实际责任?
database automation entity-framework-4.1 ef-migrations ef-model-first
以下是我的解决方案的概述:

这是我的PizzaSoftwareData类:
namespace PizzaSoftware.Data
{
public class PizzaSoftwareData : DbContext
{
public DbSet<Customer> Customers { get; set; }
public DbSet<Order> Orders { get; set; }
public DbSet<Product> Products { get; set; }
public DbSet<User> Users { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
根据Scott Guthrie博客上的一个示例,您必须在应用程序的开头运行此代码才能创建/更新数据库架构.
Database.SetInitializer<PizzaSoftwareData>(new CreateDatabaseIfNotExists<PizzaSoftwareData>());
Run Code Online (Sandbox Code Playgroud)
我在PizzaSoftware.UI中运行Program.cs中的那行代码.
namespace PizzaSoftware.UI
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Database.SetInitializer<PizzaSoftwareData>(new CreateDatabaseIfNotExists<PizzaSoftwareData>());
Application.Run(new LoginForm());
}
}
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么数据库没有创建表? …
我有以下表Essence,EssenseSet和Essense2EssenceSet
Essense2EssenceSet 是创建M:M关系的链接表.
虽然在EF代码中,我一直无法使M:M关系正常工作.
这是我的代码:
[Table("Essence", Schema = "Com")]
public class Essence
{
public int EssenceID { get; set; }
public string Name { get; set; }
public int EssenceTypeID { get; set; }
public string DescLong { get; set; }
public string DescShort { get; set; }
public virtual ICollection<EssenceSet> EssenceSets { get; set; }
public virtual EssenceType EssenceType { get; set; }
}
[Table("EssenceSet", Schema = "Com")]
public class EssenceSet
{
public int …Run Code Online (Sandbox Code Playgroud) mapping many-to-many entity-framework code-first entity-framework-4.1
我正在使用Entity Framework 4.1代码的第一种方法.
我希望将eager加载作为我的dafault配置,并避免在每个提取查询中使用Include扩展方法.
我在MSDN中建议,在DbContext构造函数中更改简单的lazy属性:
public class EMarketContext : DbContext
{
public EMarketContext()
{
// Change the default lazy loading to eager loading
this.Configuration.LazyLoadingEnabled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种方法不起作用.我必须使用Include方法在每个查询中执行预先加载.有什么想法吗?提前致谢.
首先在Entity Framework 5模型中,由于生成类文件的方式,似乎存在一些重大更改(不再生成代码,但是T4模板)
2个例子:
是否有更多的突破性变化?他们的解决方案是什么?
code-first ×2
agile ×1
automation ×1
c# ×1
database ×1
deployment ×1
events ×1
many-to-many ×1
mapping ×1
scrum ×1
user-stories ×1