我在ASP.NET中使用EF4。实体Subject
有一个字段Id
,在MySql中设置为自动递增。这通常很有用,但有一次我需要为Id
设置自定义值。
Subject sNone = new Subject { Id = 0, Title = "None", Code = "00" };
ctx.Subjects.AddObject(sNone);
这确实在数据库中创建了一个新主题。但是,其Id
未设置为0
- 它设置为自动增量值。
知道如何解决这个问题吗?
答案 0 :(得分:1)
你不能用EF解决这个问题。列自动递增后,将在实体模型中使用StoreGeneratedPattern.Identity
进行配置。这意味着:
如果关闭StoreGeneratedPattern
,您将失去所有这些行为,因为此列的值将被视为任何其他值,并且它将始终传递给数据库=您的自动增量逻辑将不起作用。
还有单独的问题 - 是否允许在MySQL中显式设置自动递增列的值?在MSSQL Server中,除非您明确地为连接打开它,否则它不会。
使用显式Id插入此记录的最佳方法是使用旧的ADO.NET或ExecuteStoreCommand
ObjectContext
直接执行SQL插入。