我正在尝试将一些数据插入到mydatabase中,但会收到类似“无法对'表(Dic)执行创建,更新或删除操作'的错误,因为它没有主键。” 我的数据库名称是“condrokotha_new.sdf”,它有一个名为“dic”的表,其中有2列名为“english”和“bangla”。我在vs 2010中的另一个C#项目中创建了这个数据库。然后我将这个数据库用于我的windowsphone项目。我可以显示数据库中的数据,但是当我尝试插入数据时,我收到错误。
这是我的代码:
public partial class MainPage : PhoneApplicationPage
{
condrokotha_newContext db = null;
// Constructor
public MainPage()
{
InitializeComponent();
db = new condrokotha_newContext(condrokotha_newContext.ConnectionString);
db.CreateIfNotExists();
db.LogDebug = true;
}
private void fav_Click(object sender, RoutedEventArgs e)
{
add_new_words("cintakhela","ami");
}
private void add_new_words(string e_word,string b_word)
{
using (condrokotha_newContext context = new condrokotha_newContext(condrokotha_newContext.ConnectionString))
{
Dic d = new Dic();
d.English = e_word;
d.Bangla = b_word;
context.Dics.InsertOnSubmit(d);
context.SubmitChanges();
}
}
}
我的数据上下文代码如下:
public static string ConnectionString = "Data Source=isostore:/condrokotha_new.sdf";
public static string ConnectionStringReadOnly = "Data Source=appdata:/condrokotha_new.sdf;File Mode=Read Only;";
public static string FileName = "condrokotha_new.sdf";
public condrokotha_newContext(string connectionString) : base(connectionString)
{
OnCreated();
}
#region Extensibility Method Definitions
partial void OnCreated();
#endregion
public System.Data.Linq.Table<Dic> Dics
{
get
{
return this.GetTable<Dic>();
}
}
}
[global::System.Data.Linq.Mapping.TableAttribute(Name="dic")]
public partial class Dic
{
private string _English;
private string _Bangla;
public Dic()
{
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Name="english", Storage="_English", DbType="NVarChar(1000)")]
public string English
{
get
{
return this._English;
}
set
{
if ((this._English != value))
{
this._English = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Name="bangla", Storage="_Bangla", DbType="NText", UpdateCheck=UpdateCheck.Never)]
public string Bangla
{
get
{
return this._Bangla;
}
set
{
if ((this._Bangla != value))
{
this._Bangla = value;
}
}
}
}
` 如何将我的数据插入我的数据库? 有人可以帮忙吗?
答案 0 :(得分:0)
例如,你有这个
SampleDataContextDataContext db = new SampleDataContextDataContext();
Employee emp = new Employee() {
FirstName = "Experts",
Lastname = "Comment",
Address = "rs.emenu@gmail.com"
}
db.Employees.InsertOnSubmit(emp);
db.SubmitChanges();
当您尝试插入新行时,上面的代码会给出相同的错误。原因是LINQ没有提供在没有主键的情况下将数据插入表的工具。此时您有两种选择。
1.创建存储过程并从LINQ调用它。
SampleDataContextDataContext db = new SampleDataContextDataContext();
db.InsertEmployeeData("Experts","Comment", "rs.emenu@gmail.com");
这里InsertEmployeeData是一个存储过程,并从代码中调用它。
2.创建一个insert语句并使用LINQ执行。
SampleDataContextDataContext db = new SampleDataContextDataContext();
string insertStatement = "Insert into Employee values('Experts', 'Comment','rs.emenu@gmail.com')";
db.ExecuteQuery<Employee>(insertStatement);
这里insert查询是正常的sql查询,并使用LINQ ExecuteQuery方法执行。