如何更改 Database First 代码以使其与 Code First 一起使用
How to make changes in Database First code to make it working with Code First
我在将代码从数据库优先更改为代码 first.I 正在实现此博客 post http://techbrij.com/facebook-wall-posts-comments-knockout-aspnet-webapi 时遇到了问题。
第一个问题是从代码生成的数据库 first.It 在 database.First 中创建两个用户配置文件 tables 是单一的,另一个是 Plurized。
注册时创建了一个(UserProfile table)(使用简单会员)。
我的Postclass是这样的----
public class Post
{
public Post()
{
this.PostComments = new HashSet<PostComment>();
}
[Key]
public int PostId { get; set; }
public string Message { get; set; }
public int PostedBy { get; set; }
public System.DateTime PostedDate { get; set; }
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual UserProfile UserProfile { get; set; }
public virtual ICollection<PostComment> PostComments { get; set; }
}
}
我的Post评论class是这样的----
public class PostComment
{
[Key]
public int CommentId { get; set; }
public int PostId { get; set; }
public string Message { get; set; }
public int CommentedBy { get; set; }
public System.DateTime CommentedDate { get; set; }
public virtual Post Post { get; set; }
public virtual UserProfile UserProfile { get; set; }
}
我的用户档案class是这样的----
public class UserProfile
{
public UserProfile()
{
this.PostComments = new HashSet<PostComment>();
this.Posts = new HashSet<Post>();
}
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
public string AvatarExt { get; set; }
public virtual ICollection<PostComment> PostComments { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
我的 DbContext 是这样的---
public class WallEntitiesDbContext : DbContext
{
public WallEntitiesDbContext():base("WallEntitiesDbContext")
{
}
public DbSet<PostComment> PostComments { get; set; }
public DbSet<Post> Posts { get; set; }
public DbSet<UserProfile> UserProfiles { get; set; }
public override int SaveChanges()
{
return base.SaveChanges();
}
}
我的连接字符串是这样的----
<add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=DBWallPostByTechBrij;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
我应该做哪些更改才能在数据库中创建一个 UserProfile table,并且 WallEntitiesDbContext 应该能够从数据库中的 table 中检索信息。
现在,如果我删除------
DbSet<UserProfile> UserProfiles {get; set;}
然后我的墙post控制器开始出现错误。如果有人可以帮助我首先使用代码,那就太好了 help.One 更重要的是,我已经手动将一些示例数据输入到数据库中,因此,登录后它应该显示 posts 和来自数据库,但它没有显示,如果我尝试 post 某些东西,它会在这一行抛出异常 System.Data.Infrastructure.DbUpdateException----
public override int SaveChanges()
{
return base.SaveChanges();
}
在 WallEntitiesDbContext class 中。
Plzzz 任何人都可以看看 it.What 我应该进行哪些更改才能使其正常工作。
我认为不需要两个 dbContext,因为您正在从文章中实现。
所以,像这样只使用一个 dbcontext----
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfile { get; set; }
public DbSet<Post> Posts { get; set; }
public DbSet<PostComment> PostComments { get; set; }
在文章中的 DbFisrt 方法中,您可以使用它,但在代码优先方法中,两个 dbcontext 肯定会创建两个 userProfile table。
无需更改。
我在将代码从数据库优先更改为代码 first.I 正在实现此博客 post http://techbrij.com/facebook-wall-posts-comments-knockout-aspnet-webapi 时遇到了问题。 第一个问题是从代码生成的数据库 first.It 在 database.First 中创建两个用户配置文件 tables 是单一的,另一个是 Plurized。
注册时创建了一个(UserProfile table)(使用简单会员)。 我的Postclass是这样的----
public class Post
{
public Post()
{
this.PostComments = new HashSet<PostComment>();
}
[Key]
public int PostId { get; set; }
public string Message { get; set; }
public int PostedBy { get; set; }
public System.DateTime PostedDate { get; set; }
public int UserId { get; set; }
[ForeignKey("UserId")]
public virtual UserProfile UserProfile { get; set; }
public virtual ICollection<PostComment> PostComments { get; set; }
}
} 我的Post评论class是这样的----
public class PostComment
{
[Key]
public int CommentId { get; set; }
public int PostId { get; set; }
public string Message { get; set; }
public int CommentedBy { get; set; }
public System.DateTime CommentedDate { get; set; }
public virtual Post Post { get; set; }
public virtual UserProfile UserProfile { get; set; }
}
我的用户档案class是这样的----
public class UserProfile
{
public UserProfile()
{
this.PostComments = new HashSet<PostComment>();
this.Posts = new HashSet<Post>();
}
[Key]
public int UserId { get; set; }
public string UserName { get; set; }
public string AvatarExt { get; set; }
public virtual ICollection<PostComment> PostComments { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
我的 DbContext 是这样的---
public class WallEntitiesDbContext : DbContext
{
public WallEntitiesDbContext():base("WallEntitiesDbContext")
{
}
public DbSet<PostComment> PostComments { get; set; }
public DbSet<Post> Posts { get; set; }
public DbSet<UserProfile> UserProfiles { get; set; }
public override int SaveChanges()
{
return base.SaveChanges();
}
}
我的连接字符串是这样的----
<add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=DBWallPostByTechBrij;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
我应该做哪些更改才能在数据库中创建一个 UserProfile table,并且 WallEntitiesDbContext 应该能够从数据库中的 table 中检索信息。 现在,如果我删除------
DbSet<UserProfile> UserProfiles {get; set;}
然后我的墙post控制器开始出现错误。如果有人可以帮助我首先使用代码,那就太好了 help.One 更重要的是,我已经手动将一些示例数据输入到数据库中,因此,登录后它应该显示 posts 和来自数据库,但它没有显示,如果我尝试 post 某些东西,它会在这一行抛出异常 System.Data.Infrastructure.DbUpdateException----
public override int SaveChanges()
{
return base.SaveChanges();
}
在 WallEntitiesDbContext class 中。 Plzzz 任何人都可以看看 it.What 我应该进行哪些更改才能使其正常工作。
我认为不需要两个 dbContext,因为您正在从文章中实现。
所以,像这样只使用一个 dbcontext----
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfile { get; set; }
public DbSet<Post> Posts { get; set; }
public DbSet<PostComment> PostComments { get; set; }
在文章中的 DbFisrt 方法中,您可以使用它,但在代码优先方法中,两个 dbcontext 肯定会创建两个 userProfile table。 无需更改。