我有一个数据库第一种方法,在Sybase上使用EF4。
SSDL
<EntityType Name="tq_qmt_logger">
<Key>
<PropertyRef Name="qmt_id" />
</Key>
<Property Name="qmt_id" Type="bigint" Nullable="false" StoreGeneratedPattern="Identity" />
<Property Name="client_id" Type="varchar" Nullable="false" MaxLength="100" />
<Property Name="logged_date" Type="datetime" Nullable="false" />
CSDL
我有相应的CSDL注释:StoreGeneratedPattern =“Identity”
现在我的源代码是,
tq_qmt_logger qmtLogger = new tq_qmt_logger();
qmtLogger.client_id = machineID;
qmtLogger.logged_date = DateTime.Now;
// qmtlogger.qmt id is omitted because it is
// generated by a sequence in the DB.
context.tq_qmt_logger.AddObject(qmtLogger);
context.savechanges()
SaveChanges抛出OptimisticConcurrencyException并显示错误Store update,insert或delete语句影响了意外的行数(0)。我的猜测是,EF将0传递给我的qmt_id(标识)列,该列被拒绝。有人可以指导如何解决这个问题吗?