我有以下非常简单的代码:使用SQL CE的实体框架不允许使用零值?
using System;
using System.Data.Entity;
namespace TestCSharp
{
public class Testee
{
public long Id { get; set; }
public string Name { get; set; }
public Testee()
{
}
public Testee(long id, string name)
{
Id = id;
Name = name;
}
}
public class DatabaseContext : DbContext
{
public DatabaseContext()
: base("name=MyContext")
{
}
public DbSet<Testee> Testees { get; set; }
}
class Program
{
static void Main(string[] args)
{
var dbContext = new DatabaseContext();
var testData = new Testee(0, "name");
dbContext.Testees.Add(testData);
dbContext.SaveChanges();
Console.WriteLine("Id: {0}", testData.Id);
}
}
}
而且我认为它应该打印0
但实际上它打印1
。如果我使用除0
以外的任何其他值,那么我会得到该值。当我问它时,它增加了一行1
而不是0
。零值有什么问题?我对EF和SQL CE都是新手,但看起来像一个bug,不是?
我在桌面Windows 8.1上使用EF(6.x)和SQL CE(4.x)的最新Nuget包。
UPD: 创建表脚本:
CREATE TABLE [Testees] (
[Id] bigint IDENTITY (1,1) NOT NULL
, [Name] nvarchar(4000) NULL
);
GO
ALTER TABLE [Testees] ADD CONSTRAINT [PK_dbo.Testees] PRIMARY KEY ([Id]);
GO
你能脚本的CREATE TABLE脚本测试对象的表。 – ErikEJ
@ErikEJ,更新(似乎与您的工具,我做了一代 - 感谢该工具!)。看起来问题是'IDENTITY(1,1)',对吧?我不应该明确要求EF添加这个IDENTITY而不是它自己做这件事吗? – ixSci