标签: ef-code-first

MVC 3 EF基本架构问题

我是MVC/EF新手.

我在我的数据库中有几个不同的表:说柠檬,糖和水.

我应该创建三个单独的模型:柠檬,糖和水,还是制作一个定义三个不同类的大型模型(有三个独立的DBContext类?)然后构建每个模型?

现在我正在制作单独的模型,但看起来我必须最终建立三个独立的数据库,这似乎有点过分.

电影示例只有一个表,所以它不能很好地回答我的问题.

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

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

如何在没有app.conf文件的情况下使用EF Code-First?

如果我使用app.conf文件来定义SQL CE 4.0 DB的连接,我的应用程序工作正常.

如何在代码中没有app.conf来"初始化连接"(希望这是正确的术语......)

这是我到目前为止(不多):

SqlCeConnectionStringBuilder builder = new SqlCeConnectionStringBuilder();
builder["Data Source"] = "db.sdf";               

//What is missing here?

PartyDB DB = new PartyDB();

var dinners = from d in DB.Dinners                        
              select d;
Run Code Online (Sandbox Code Playgroud)

任何提示都受到高度赞赏.

.net c# entity-framework ef-code-first c#-4.0

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

实体框架代码首先是继承问题

我有代码第一个实现流动的层次结构,

 BaseContact{
   Public int Id{get;set;}
   public string Name{get;set;} 
//..
 }

 Person:BaseContact{

   public string Designation{get;set;} 
//..
 }
Company:BaseContact{
     public int NumOfEmployees{get;set;} 
//..
 }
Run Code Online (Sandbox Code Playgroud)

我想通过仅使用Id值来识别人或公司?目前我正在使用反思来确定它是个人还是公司.有没有其他方法来识别它而不做太多?

inheritance entity-framework ef-code-first entity-framework-4.1

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

EF 4.1 Code-first上的接口和多重约束违规

我正在尝试与供应商,经销商和零售商定义供应链.此实体由Contract类绑定,该类还定义ProductLine及其将使用的产品.对于给定的ProductLine,供应商(该ProductLine的唯一所有者)与经销商之间将签订合同,然后是该经销商与零售商之间的另一份合同.

问题是两个经销商之间也有合同,所以我尝试创建两个接口(ISeller和IBuyer).供应商实施ISeller,零售商实施IBuyer和Dealer实现两个接口:

public class Supplier : ISeller
{
    public int Id { get; set; }
    public virtual ICollection<Contract> Contracts { get; set; }
}

public class Dealer : ISeller, IBuyer
{
    public int Id { get; set; }
    public virtual ICollection<Contract> Contracts { get; set; }
}

public class Retailer : IBuyer
{
    public int Id { get; set; }
    public virtual ICollection<Contract> Contracts { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

合同然后将ISeller绑定到IBuyer,如下所示:

public class Contract
{
    public int Id { get; set; …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework ef-code-first

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

EF4代码第一个流畅的映射不适用于继承属性?

有没有人尝试过映射继承的属性?因为我很高兴听到它正常工作并且我在某处犯了错误,因为我收到以下错误:

"属性'UserName'不是'Advertiser'类型的声明属性.通过使用Ignore方法或NotMappedAttribute数据注释验证该属性是否未从模型中显式排除.请确保它是有效的原始属性."

我的模型看起来像这样:

abstract class Entity { public int Id {get; set; }}
abstract class User : Entity { public string UserName {get; set;} }
sealed class Advertiser : User { }
Run Code Online (Sandbox Code Playgroud)

我的AdvertisementConfiguration类看起来像这样:

class AdvertiserConfiguration : EntityTypeConfiguration<Advertiser>
{
   public AdvertiserConfiguration()
   {
      // the following line indirectly causes an InvalidOperationException:
      Property( x => x.UserName ).HasMaxLength(50);
   }
}
Run Code Online (Sandbox Code Playgroud)

如果我更改广告商类以使其不从User继承(并将UserName属性拉下来),那么一切正常.

entity-framework invalidoperationexception code-first entity-framework-4 ef-code-first

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

将WHERE NOT IN或LEFT JOIN转换为LINQ

我首先使用EF代码设置以下域模型:

public class User
{
    public virtual int Id { get; set; }
    public virtual string Email { get; set; }
    public virtual ICollection<UserProcessed> UsersProcessed { get; set; }
}

public class UserProcessed
{
    public virtual int Id { get; set; }
    public virtual DateTime CreatedAt { get; set; }
    public virtual User user { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我试图将以下T-SQL查询转换为LINQ,我遇到了一些困难:

SELECT u.Email
FROM Users u LEFT JOIN UsersProcessed up ON u.Id = up.UserId
WHERE up.UserId IS NULL
AND u.CreatedAt BETWEEN …
Run Code Online (Sandbox Code Playgroud)

c# linq ef-code-first

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

如何使用Linq在EF Code中首选OFTYPE?

使用传统的Entity Framework并使用ESQL查询时,只能使用OFTYPE来返回基类型.

请参阅:http: //msdn.microsoft.com/en-us/library/bb399295.aspx

在实体框架代码首先,我有继承设置,其中B是A的子类型.执行MyContext.Set<A>().OfType<A>()仍然返回类型B的元素.理想情况下,我想调用MyContext.Set<A>().OfOnlyType<A>()它,它将转换为与使用ESQL的OFTYPE时相同的方式.

我还发现我可以is在where语句中使用运算符,但同样会返回A和B实体.

如何编写一个只过滤到A类元素的linq表达式?

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

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

EF代码首次建模将如何影响数据库中现有的数据

我清楚地知道我可以自定义同步模型和DB模式过程的行为.我正在DropCreateDatabaseIfModelChanges<>上课这样做.

假设我有一个工作项目和网站,DB并填写数据.一切都很好.

有一天,我决定需要改变一些功能.更改将影响我的模型的属性(可以重命名/删除/添加,一些模型将是新的,一些模型将被删除).

我的问题:当我检查所有更改时,我已部署网站上现有数据会发生什么?

我会失去它吗?如果是这样,我该如何避免呢?

database entity-framework ef-code-first asp.net-mvc-4

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

如何从存储库中获取新添加的实体?

我正在使用ObjectContext与其他存储库共享的存储库实现.存储库包含一个ObjectSet实体.我正在通过Add()方法添加新实体ObjectSet.在导入数据时,我想查询这些新添加的对象以防止重复数据.

ObjectContext实现工作模式的一个单元.在导入过程结束时,我想调用commit方法来调用context.SaveChange()持久化数据.

但是,在我打电话之前,我找不到一种简单的方法来查询新添加的实体SaveChanges().你们怎么处理这些问题?

entity-framework unit-of-work repository-pattern ef-code-first entity-framework-4.1

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

一对多关系错误

我有以下型号,但我一直收到错误:

未处理的异常:System.InvalidOperationException:发生关系乘法约束违规:EntityReference只能有一个关联对象,但查询返回了多个相关对象.这是一个无法恢复的错误.

 public class Tournament
    {
        public long TournamentId { get; set; }        
        public string Title { get; set; }        
        public virtual User CreatedBy { get; set; }                    
    }

 public class User
    {
        public int UserId { get; set; }

    }

        modelBuilder.Entity<Tournament>()
            .HasRequired(t => t.CreatedBy)
            .WithOptional()               
            .Map(c => c.MapKey("CreatedById")); // correct column name
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first

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