标签: 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
查看次数

实体框架报告循环引用,但它没有任何意义

这是约.我正在使用的代码.

public class Note {
  public virtual Customer Customer { get; set; }
  public virtual User User { get; set; }
  public ICollection<NoteComment> Comments { get; set; }
}

public class NoteComment {
  public virtual User User { get; set; }
}

public class User {
  public ICollection<Note> Notes { get; set; }
}

public class Customer {}

// --------------------------------------

public class OurDataContext {
  private void ConfigureNotes(DbModelBuilder modelBuilder) {
    modelBuilder.Entity<Note>()
      .HasRequired<User>(n => n.User)
      .WithMany(u => u.Notes)
      .Map(a => a.MapKey("UserId"));

    modelBuilder.Entity<Note>() …
Run Code Online (Sandbox Code Playgroud)

entity-framework circular-reference code-first sql-server-ce ef-code-first

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

EF 5更新N级深度对象图?

这是情况,我有三个实体有以下关系:

-Team one-to-one TeamContact
-TeamContact one-to-one TeamAddress
Run Code Online (Sandbox Code Playgroud)

我已经设法创建,添加和保存这些对象没有任何问题.但是,当我尝试创建编辑方法时,修改后只保存父对象.见下面我到目前为止的情况;

在我的Db类中保存方法

public void SaveTeam(Team team)
    {
        if (team.Id == 0)
        {
            context.Teams.Add(team);
        }
        else
        {
            var model = context.Teams.Find(team.Id);
            context.Entry(model).CurrentValues.SetValues(team);
        }
        context.SaveChanges();
    }
Run Code Online (Sandbox Code Playgroud)

编辑方法

[HttpGet]
    public ActionResult Edit(int id)
    {
        var model = _dataSource.Teams.FirstOrDefault(t => t.Id == id);
        return View(model);
    }

    [HttpPost]
    public ActionResult Edit(Team team)
    {
        if (ModelState.IsValid)
        {
            _dataSource.SaveTeam(team);

            return RedirectToAction("Detail", "Team", new { id = team.Id });
        }
        return View(team);
    }
Run Code Online (Sandbox Code Playgroud)

就像我上面所说,我只能让我修改父对象,我在这里错过了什么?

试着

 public void SaveTeam(Team team)
    {
        if …
Run Code Online (Sandbox Code Playgroud)

c# code-first asp.net-mvc-4 asp.net-4.5 entity-framework-5

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

如何在创建新记录之前获取最大ID值?

我认为在很多情况下这是一个普遍问题,但我没有在网上找到合适的答案.在我的MVC应用程序中,我有以下表格:

问题表:

---------------------------------------------
IssueID (pk) | CategoryID (fk) | IssueNumber
---------------------------------------------
   1         |     1           |      1
   2         |     1           |      2
   3         |     2           |      1
   4         |     1           |      3
Run Code Online (Sandbox Code Playgroud)


分类表:

-----------------------------------
CategoryID (pk) | Prefix | Name
-----------------------------------
     1          |   COM  | Computer
     2          |   GEN  | General
Run Code Online (Sandbox Code Playgroud)


在这里,我对两个类别(COM和GEN)使用IssueID(主键)字段.另一方面,我想依次生成IssueNumber(1,2,3 ......)而没有任何CategoryID的差距.另一方面,我还想从1开始为另一个类别创建IssueNumber,如上所示.所以问题是:

1)上述方法有问题吗?如果是这样,你对此有何建议?

2)在创建记录之前,如何获取IssueNumber的最大值?我想在SaveChanges()方法上做这个(我使用Entity Framework).由于我没有将IssueNumber字段设为PK,因此我无法使MsSQL Server自动增加此列值.

任何帮助,将不胜感激.提前致谢.


更新:

以下是使用lambda的解决方案:

public int SaveIssue(Issue issue)
{
    int max = context.Issues.Where(m => m.CategoryID == issue.CategoryID ).Max(m => m.IssueNumber); 
    issue.IssueNum = max + 1; …
Run Code Online (Sandbox Code Playgroud)

sql-server asp.net-mvc entity-framework primary-key code-first

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

导航属性在CTP4 Code First EF4 Feature中查询后为空

我刚刚开始使用CTP4和Code-First.我有一个可能的约会网站的以下设置:

public class User
{
    [Key]
    public int Id { get; set; }
    [Required]
    public string LoginName { get; set; }
    [Required]
    public string Firstname { get; set; }
    [Required]
    public string Lastname { get; set; }

    public string Street { get; set; }
    [Required]
    public string Zip { get; set; }
    [Required]
    public string City { get; set; }
    [Required]
    public bool Gender { get; set; }
    [Required]
    public int SoughtGender { get; set; }
    [Required]
    public string Password …
Run Code Online (Sandbox Code Playgroud)

c# code-first entity-framework-4

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

MVC 3 EF基本架构问题

我是MVC/EF新手.

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

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

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

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

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

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

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
查看次数

如何防止Code First对关系启用外键约束?

我有两个实体,用户和反馈,在用户名字段的帮助下,它们之间存在一对多关系。

Feedback --> User 
--------   --------
username   username
Run Code Online (Sandbox Code Playgroud)

但是,有时反馈可能来自未注册的用户,并且“反馈”上的“用户名”字段将为Null。在这种情况下,由于外键约束,添加反馈将失败。

如何以声明方式或通过Fluent API禁用对关系的外键约束的实施?创建数据库时,默认情况下启用它。

谢谢!

entity-framework code-first ef-code-first

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

DbDomainService <T>不生成代理实体

我已经在几台机器上的visual studio 2010和11 beta上试过这个.我还使用了EF 4.3和5.0 - beta 2.我正在尝试Silverlight 5中的代码优先方法.

我创建了一个DbDomainService并为它创建了CRUD操作,但在客户端没有创建任何代理实体.我在WCF类库中执行此操作.以下是它的创建方法:我将一个项目添加到解决方案(WCF RIA Services类库).客户端和服务端项目会自动添加并通过RIA链接进行链接.我创建了我的实体和dbcontext(参见下面的源代码).我创建了我的域服务类(向导只显示了一半的时间,非常错误)并确保有CRUD操作.我重建,并在客户端项目上显示所有文件,并且没有生成代码.如果我将DomianService类更改为继承自DomainService而不是DbDomainService,那么我的代理实体将按照预期在客户端生成.

构建解决方案时,我收到以下警告:

警告1创建MEF组合容器时发生以下异常:无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.将使用默认代码生成器.AProgram.Client.RIAServices

请帮忙 :)

    namespace AProgram.Server.RIAServices.Models.Sales
    {

       public class Customer
       {
          [Key]
          public int CustomerID { get; set; }

          [Required]
          [MaxLength(50)]
          public string CustomerName { get; set; }
       }

    }

    namespace AProgram.Server.RIAServices
    {
       public class SalesDbContext : DbContext
       {
          public DbSet<Customer> Customers { get; set; }
       }
    }

    namespace AProgram.Server.RIAServices
    {
       using System;
       using System.Collections.Generic;
       using System.ComponentModel;
       using System.ComponentModel.DataAnnotations;
   using System.Linq;
   using System.ServiceModel.DomainServices.Hosting;
   using System.ServiceModel.DomainServices.Server;


   // TODO: Create …
Run Code Online (Sandbox Code Playgroud)

wcf ria entity-framework code-first ef-code-first

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

我可以创建一个常量表达式以用于属性参数吗?

任何回答此问题的人都知道,属性参数需要常量表达式.可选参数(对于任何事物,而不仅仅是属性)也需要常量表达式作为其默认值.

我遇到的(尽管是轻微的)不便是带有RegularExpressionAttribute模式参数.我的数据模型中有许多使用此属性的属性(可在System.ComponentModel.DataAnnotations中找到),每当我对验证模式进行更改时,我都必须返回并进行更改everryyywherrreee...这真的很烦人.

我的问题 ...

是否存在可以声明的.net结构,被识别为常量表达式,然后在通常需要常量表达式的情况下可用?

如果我可以在RegexPatternForNameProperty = "^[a-zA-Z0-9,.# ]{1,150}$"某个地方声明属性,然后根据需要更改那个值,那就太好了.

c# vb.net entity-framework code-first data-annotations

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