标签: ef-code-first

是否可以在共享主机上使用EF CodeFirst?具体的初始化者?

我刚买了2个月的godaddy托管.我使用EF CodeFirst编写了一个ASP.NET MVC3应用程序.在应用程序中,我使用初始化程序,如果模型已更改,将删除/创建数据库.当我尝试这样说时,我收到了一个错误

"Cannot drop the database 'cellularautomata', because it does not exist or you do not have permission."
Run Code Online (Sandbox Code Playgroud)

我认为这与我在共享主机上并且没有删除/创建数据库的权限这一事实有关.有没有办法解决?

asp.net shared-hosting code-first ef-code-first asp.net-mvc-3

2
推荐指数
1
解决办法
1027
查看次数

EF codefirst在多个场景中删除所有子对象?

如何在多对多场景中删除所有子对象?例如,我想删除所有roles属于a user.

我先使用EF代码.

ef-code-first entity-framework-4.1

2
推荐指数
2
解决办法
5005
查看次数

保存实体会导致重复插入查找数据

我使用EF 4.1"代码优先"来创建我的数据库和对象.

鉴于:

public class Order 
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual OrderType OrderType { get; set; }
}

public class OrderType 
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

订单有一个ordertype.订单类型只是一个查找表.价值观不会改变.使用Fluent API:

//Order
ToTable("order");
HasKey(key => key.Id);
Property(item => item.Id).HasColumnName("order_id").HasColumnType("int");
Property(item => item.Name).HasColumnName("name").HasColumnType("string").HasMaxLength(10).IsRequired();

HasRequired(item => item.OrderType).WithMany().Map(x => x.MapKey("order_type_id")).WillCascadeOnDelete(false);

//OrderType
ToTable("order_type");
HasKey(key => key.Id);

Property(item => item.Id).HasColumnName("order_type_id").HasColumnType("int");
Property(item => item.Name).HasColumnName("name").HasColumnType("nvarchar").HasMaxLength(100).IsRequired(); 
Run Code Online (Sandbox Code Playgroud)

现在在我们的App中,我们加载所有查找数据并对其进行缓存.

var …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework-4 ef-code-first entity-framework-4.1

2
推荐指数
1
解决办法
1933
查看次数

实体框架| 代码优先| 从CultureInfo.Name映射子属性

我有这样一个实体:

public class Course {
    public CultureInfo Culture {get; set;}
    :
}
Run Code Online (Sandbox Code Playgroud)

我想只将Name属性映射CultureInfo到Entity Framework为我生成的表中的单个列.

我该怎么做?目前我已经尝试过查看DbContext的OnModelCreating()方法,但我找不到任何突出的东西.

我正在使用Entity Framework 4.1和MVC 3应用程序使用Code First方法.

非常感谢.

mapping code-first ef-code-first entity-framework-4.1 asp.net-mvc-3

2
推荐指数
1
解决办法
734
查看次数

EF代码中的Discriminator列首次发布

愚蠢的问题:我们如何在EF 4.1 RTM上指定鉴别器列的值?我有这个:

modelBuilder.Entity<Entity>( )
            .Map<Individual>( m => m.Requires( ind => ind.EntityKind ).HasValue( 1 ) )
            .Map<Company>( m => m.Requires( c => c.EntityKind ).HasValue( 2 ) );
Run Code Online (Sandbox Code Playgroud)

这是我发现的关于它的链接.但是,似乎HasValue现在不接受任何参数.对此有何帮助?顺便说一下,我在哪里可以找到关于EF代码的完整正确的文档?

谢谢.

entity-framework ef-code-first

2
推荐指数
1
解决办法
2100
查看次数

EF Code First认为数据库已过期 - 仅限于生产中

我有一个使用SQL Server CE 4.0和Entity Framework 4.1 Code First的ASP.NET MVC 3应用程序.它在本地工作正常,但在生产中,它失败并出现以下错误:

自创建数据库以来,支持'foobar'上下文的模型已更改.手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer.例如,DropCreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并可选择使用新数据对其进行种子设定.

我已经验证我的应用程序DLL和数据库文件在远程服务器上是最新的,但我继续收到此错误.

知道问题可能是什么?

注意:我使用的是Entity Framework 4.1的RTF版本,而不是CTP.

编辑

好的,如果我删除EdmMetadata表,并将数据库重新发布到生产服务器,我就不会再收到错误.但是,我完全不明白为什么我应该这样做.该模型没有改变.它在几周内没有改变,我今天重建了数据库.我想这整个事情的关键是哈希.与之比较的EdmMetadata哈希是什么?

编辑2

根据Mark S的回答,EdmMetadata表中的哈希值与SSDL的哈希值进行比较.但是,解决方案中的任何位置都没有实际的SSDL文件(没有扩展名为.ssdl的文件,也没有包含"ssdl"的文件).那么,SSDL实际存储在哪里?它是在设计时还是在运行时生成的?

编辑3

为了回答我自己的问题,SSDL 确实在运行时生成和缓存(这里有更多细节),但是看看SSDL的实际模式,我不确定我看到任何可能因为项目的DLL生活在另一个中而可能发生变化的东西位于不同的服务器上.


注意:我使用完全相同的数据库文件(.sdf)进行测试和生产.我实际上是将文件从bin/App_Data ftp到生产服务器上的App_Data文件夹.我也在ftp项目DLL.因此,测试和生产之间唯一不同的是这些文件存在于不同的地方.

另外,仅为记录,这是我的连接字符串:

DataSource=|DataDirectory|foobar.sdf" providerName="System.Data.SqlServerCe.4.0

编辑4(最终编辑?)

问题原来是一个DLL问题.我认为EntityFramework DLL的不同版本正在远程使用而不是本地使用.解决方案是确保我拥有最新版本的EF 4.1(RTW),清除并重新添加引用,重新生成数据库并重新发布.现在一切都很好.

asp.net-mvc entity-framework sql-server-ce ef-code-first entity-framework-4.1

2
推荐指数
1
解决办法
3140
查看次数

EF代码首先4.1一对多双向设置

我有以下代码:

modelBuilder.Entity<User>().HasMany(x => x.Items).WithRequired();
Run Code Online (Sandbox Code Playgroud)

模型看起来像

public class User
{
    public long Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Item> Items { get; set; }
}

public class Item    
{
    public long Id { get; set; }
    public string Title { get; set; }

    public virtual User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当EF为我生成数据库时,我最终在Items表(User_Id和User_Id1)中有两个外键而不是一个.我如何配置这个,所以只为我创建了一个密钥?

出于测试目的,我从Item类中删除了User,在这种情况下,配置工作正常,只创建了一个键.

ef-code-first entity-framework-4.1

2
推荐指数
1
解决办法
1764
查看次数

EF Code首先是Eager loading和OrderBy问题

我有两个名为Category和Product的实体,其中1:n关系.

我希望得到一个带有孩子的分类.

这是我的linq:

 _db.Categories.Where(c => c.CategoryID == catID)
    .Include(c => c.Products.OrderBy(p => p.ProductID))
    .SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)

由于orderby,此查询使用以下异常强制执行.

Include路径表达式必须引用在类型上定义的导航属性.使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性.参数名称:路径

linq linq-to-entities entity-framework eager-loading ef-code-first

2
推荐指数
1
解决办法
2830
查看次数

从DbEntityEntry获取表名(代码优先)

简单:如何从DbEntityEntry对象获取映射表名?我在一个扩展DbContext的类中.我见过ObjectContext的例子,但不适用于CF.

谢谢.

c# entity-framework ef-code-first

2
推荐指数
2
解决办法
6921
查看次数

坚持使用asp.net mvc 3.0脚手架,以防多对多关系

我正在使用EF代码和mvc脚手架开发mvc3.0应用程序.我目前坚持实体之间的多对多关系.我有以下模型.

命名空间BigApp.Models {

#region POCO Objects
public class Group
{
    public int Id { get; set; }
    public string Name { get; set; }        
    public DateTime CreatedOn { get; set; }
    public DateTime UpdatedOn { get; set; }

    public virtual ICollection<Project> Projects { get; set; }
}
public class Project
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Url { get; set; }
    public DateTime CreatedOn { get; set; }
    public …
Run Code Online (Sandbox Code Playgroud)

many-to-many scaffolding ef-code-first asp.net-mvc-3

2
推荐指数
1
解决办法
2505
查看次数