0
我是LINQ to SQL中的新用戶,我使用它有一些問題。 我已經使用了LINQ to SQL Designer,並創建了我的類,映射到數據庫表上。 特別是,我有一個類,命名聲音:在嵌套字段中插入
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.voce")]
public partial class voce : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _id_voce;
... other private fields;
private int _category;
private EntityRef<category> _category1;
public voce()
{
this._riepilogo = new EntitySet<riepilogo>(new Action<riepilogo>(this.attach_riepilogo), new Action<riepilogo>(this.detach_riepilogo));
this._hera = default(EntityRef<hera>);
this._category1 = default(EntityRef<category>);
OnCreated();
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_id_voce", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int id_voce
{
get
{
return this._id_voce;
}
set
{
if ((this._id_voce != value))
{
this.Onid_voceChanging(value);
this.SendPropertyChanging();
this._id_voce = value;
this.SendPropertyChanged("id_voce");
this.Onid_voceChanged();
}
}
}
......
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_category", DbType="Int NOT NULL")]
public int category
{
get
{
return this._category;
}
set
{
if ((this._category != value))
{
if (this._category1.HasLoadedOrAssignedValue)
{
throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
}
this.OncategoryChanging(value);
this.SendPropertyChanging();
this._category = value;
this.SendPropertyChanged("category");
this.OncategoryChanged();
}
}
}
正如你所看到的,幾句類有一個字段中指定的類別,是指一臺名爲類別。
當我添加一個新的幾句到我的數據庫,我創建了一個新的幾句istance和使用的DataContext,我只需添加它,使用:
voce v = new voce(){...field, category1 = //create or retrieve category};
特別是,類別字段從檢索數據庫如果已經存在,或者如果不存在,則在我插入語音之前插入它。
的問題是,當我添加了語音數據庫:
datacontext.InsertOnSubmit(v);
datacontext.SubmitChanges();
再次插入類,具有獨特的contraint失敗。
如何在不添加任何嵌套對象的情況下添加語音?
謝謝你,對不起我的英文不好。
我覺得這個問題可能在'//創建或檢索類別'。它可能總是創建新的類別,或者不會將返回的類別返回到當前的'datacontext'。你可以發佈該方法的代碼嗎? – mipe34