EF4.1 code first生成数据库的一个问题~~

wlf535944903 2011-05-25 10:59:02
很常见的一个问题 学生表 课程表 学生课程关系表 一般关系表里会有成绩
这是我希望 EF生成数据库的表的样子

实体类 学生实体类 下面有课程的集合 课程实体类 下面有学生的集合 这样就会自动生成 学生表 课程表 学生课程关系表 但是课程表里没有 成绩..... 请问这个成绩应该加哪 ? 怎么加? 才能实现关系表里有成绩呢?

在博客园里 和领域驱动的群里 问了下 这个的设计 图是这样的 但是EF生成不了....




有谁知道怎么解决么? 谢谢...
...全文
965 24 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenqf2008 2011-07-05
  • 打赏
  • 举报
回复
算解决了吗?

类的设计按11楼就可以啊

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

public virtual List<Role> Roles { get; set; }
}

public class Role
{
public int RoleId{ get; set; }
public string RoleName{ get; set; }

public virtual List<User> Users{ get; set; }
}


然后在你的DbContext实现的类的OnModelCreating中建立关系即可代码大致如下:

modelBuilder.Entity<User>()
.HasMany<Role>(u=>u.Roles)
.WithMany(r=>r.Users)
.Map(m=>{
m.ToTable("CourseMark");
m.MapLeftKey("UserId");
m.MapRightKey("RoleId");
});
wlf535944903 2011-05-25
  • 打赏
  • 举报
回复
来个解决问题的吧
  • 打赏
  • 举报
回复
帮顶,学习学习
wlf535944903 2011-05-25
  • 打赏
  • 举报
回复

BlogDB BlogContext = new BlogDB();

public ActionResult Index()
{
var s = BlogContext.students;
Student model = new Student();
model.Name = "ds";
model.Id = "2";
s.Add(model);
BlogContext.SaveChanges();
return View();
}

报错... 更新条目时出错

对象名 'dbo.Students' 无效。
wlf535944903 2011-05-25
  • 打赏
  • 举报
回复
NH 就可以的 生成就没问题

一个 student包含多个 courseMark courseMark 包含一个 Course的引用 在NH就生成 为学生表 课程表 学生课程关系表 (有成绩) 郁闷
在EF就报错了

上代码


public class Entity
{
[Key]
public string Id { get; set; }
}

public class Student : Entity
{
public string Name { get; set; }
public float Kg { get; set; }
public float Age { get; set; }
public virtual IList<CourseMark> Marks { get; set; }
}
public class CourseMark:Entity
{
public Course Course { get; set; }
public double Score { get; set; }
}

public class Course:Entity
{
public string CourseName { get; set; }
public string CourseCode { get; set; }
}









下面是继承DbContext


public class BlogDB : DbContext
{

public DbSet<Course> Courses { get; set; }
public DbSet<CourseMark> CourseMarks { get; set; }
public DbSet<Student> students { get; set; }

}




wlf535944903 2011-05-25
  • 打赏
  • 举报
回复
关系表里有其他数据 应该是挺常见的吧? 大家都怎么解决的?

比如 投票 要有 投票人表 被投票人表 多对多的关系 (里面除了两个主键 还要有投票时间等字段)

实体类怎么设计的呢?
  • 打赏
  • 举报
回复
EF生成

帮顶。。。接点分
Lisliefor 2011-05-25
  • 打赏
  • 举报
回复
不会,帮忙顶下。
porschev 2011-05-25
  • 打赏
  • 举报
回复

何苦类。。又自己解决了。。

多想会再发上会死啊。。
kubbvip 2011-05-25
  • 打赏
  • 举报
回复
楼主会用Code First模式吧。按他的实体类操作一次就OK
kubbvip 2011-05-25
  • 打赏
  • 举报
回复
http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
wlf535944903 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 kubbvip 的回复:]

http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

找到这个。。楼主看看
[/Quote]
+1
差不多 实体类设计就是这样 ... 我英文不太好 不知道有没有这个的demo~
claymore1114 2011-05-25
  • 打赏
  • 举报
回复
你的代码 感觉可以, 这几张表 数据库没有生成 成功吧。
kubbvip 2011-05-25
  • 打赏
  • 举报
回复
http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

找到这个。。楼主看看
wlf535944903 2011-05-25
  • 打赏
  • 举报
回复
感谢大家的回答 一会儿结贴散分~~ 一会儿贴下详细的解决方法...
wlf535944903 2011-05-25
  • 打赏
  • 举报
回复
大概明白了 自己解决了 实体类的设计都对着呢....
是因为我数据库以前有别的表
vrhero 2011-05-25
  • 打赏
  • 举报
回复
各建一个导航属性EntityCollection<T>,关联之前映射的关系就OK了...
wlf535944903 2011-05-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 vrhero 的回复:]

多对多非常简单啊,没有任何问题...“关系”映射到关系表就OK了...
[/Quote]

多谢回答 能否说下 实体类怎么设计呢?
vrhero 2011-05-25
  • 打赏
  • 举报
回复
多对多非常简单啊,没有任何问题...“关系”映射到关系表就OK了...
kubbvip 2011-05-25
  • 打赏
  • 举报
回复
没看清楚。。Sorry。。我尝试一下看看。
加载更多回复(4)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧