【发布时间】:2016-09-14 01:25:48
【问题描述】:
这里有个小问题。调试了一个小时,ajax 传递数据,但是...我不能用 linq 将它放入数据库,因为错误
即使我确实有自动增量,它说它就像它关闭或什么的。 这是代码
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static int Save(int filmID, int rate)
{
using (DataClassesDataContext du = new DataClassesDataContext())
{
du.ratings.InsertOnSubmit(new ratings
{
fk_film_id = filmID,
rating_total = rate,
rating_votes = 0
});
du.SubmitChanges();
}
数据库表:
CREATE TABLE [dbo].[ratings]
(
[fk_rating] INT IDENTITY (1, 1) NOT NULL,
[fk_film_id] INT NOT NULL,
[rating_total] INT NOT NULL,
[rating_votes] INT NOT NULL,
PRIMARY KEY CLUSTERED ([fk_rating] ASC),
CONSTRAINT [FK_ratings_films]
FOREIGN KEY ([fk_film_id]) REFERENCES [dbo].[films] ([film_id])
);
这里的错误信息:
System.Data.Linq.dll 中出现“System.Data.SqlClient.SqlException”类型的异常,但未在用户代码中处理
附加信息:当 IDENTITY_INSERT 设置为 OFF 时,无法在表“ratings”中插入标识列的显式值。
我做错了什么?
@add 模型,但我这里并没有真正使用这种模式
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _fk_rating;
private int _fk_film_id;
private int _rating_total;
private int _rating_votes;
private EntityRef<films> _film;
public ratings()
{
this._film = default(EntityRef<films>);
OnCreated();
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_fk_rating", DbType="Int NOT NULL", IsPrimaryKey=true)]
public int fk_rating
{
get { return this._fk_rating; }
set
{
if ((this._fk_rating != value))
{
this.Onfk_ratingChanging(value);
this.SendPropertyChanging();
this._fk_rating = value;
this.SendPropertyChanged("fk_rating");
this.Onfk_ratingChanged();
}
}
}
【问题讨论】:
-
模型是如何映射的?
-
您可能需要使用
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]属性。 -
@juharr 试过了,问题是 FkRating 在这种情况下没有使用。所以它不起作用。 @_ @
-
您向我们展示了错误的模型。我们需要查看 EF 或 Linq-toSQL 模型,而不是您在 UI 或任何地方使用的模型。
-
我认为自从将表添加到 .dbml 文件后,您已将主键更改为 IDENTITY INSERT。要检查这一点:打开 .dbml 文件,删除表,然后将其重新拖放到 .dbml 文件中并重新编译。
标签: c# sql-server linq