1

语境:

用户是一个实体,一个组由 1 个或多个实体组成。用户使用他的电子邮件而不是他的 entityID (= userID) 登录。当需要创建用户时,他使用 USER 表中的信息填写表单(不包括他的 userID ofc)。要生成用户的 ID,我首先需要在 ABSTRACT_ENTITY 表中生成他的 ID,因为 groupID 和 userID 必须是唯一的(阅读:不得冲突)

问题:

  • 如何让 LINQ 在 ABSRACT_ENTITY 表中为 ID 生成/创建下一个身份?

在其他情况下,这很容易,因为您只需填写其他行并自动生成它,但在这种情况下没有其他行......

数据库图

4

3 回答 3

2

一些须藤代码

Abstract_Entity entity = new Abstract_Entity();
entity.ID = Guid.NewGuid();

User user = new User();
//fill with user data
user.userID = entity.ID;

MyContext db = new MyContext();
db.Abstract_Entitys.Attach(entity);
db.Users.Attach(user);
db.SubmitChanges();

这里的想法是所有的 ID 都是 sql 类型的 uniqueidentifier,它是 c# 类型的 Guid。指南用于所有意图和目的独特http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates

如果您不想在代码中生成 guid,您可以通过将 AutoGenerateValues 设置为 true 并在数据库中将 DefaultValueOrBinding 设置为 (newid()) 来配置数据库上下文以自动生成值

于 2013-10-31T13:05:39.800 回答
1

Put the things that User and Group have in common in the table abstract_entity

If you can't think of something, then just add a "Created" field (as a datatime). This will be enought to let EF generate a value for abstract_entity.Id.
With EF, identity fields that are automatic set, should be ignored when you create the record.
Which is why it cannot be the only field on a table

于 2013-10-31T14:00:47.567 回答
1

解决方案

Abstract_Entity ae = new Abstract_Entity();
Entities.Abstract_Entity.Add(ae);
Entities.SaveChanges();

User u = new User();
u.email = email;
u.userID = ae.ID;
Entities.User.Add(u);
Entities.SaveChanges(); 
于 2013-11-03T14:52:48.600 回答