나는 Ms Access 데이터베이스로 Linq 데이터 매핑을 사용 해왔다. 평소와 같이 OleDbConnection
을 만들고 DataContext
으로 전달합니다.Ms 액세스 데이터베이스를 사용하는 Linq 데이터 매핑 : "SQL 문의 끝에 세미콜론 (;)이 누락되었습니다."
복잡한 쿼리를 기반으로 테이블에서 데이터를 검색하기 위해 지금까지 문제가 없었으며 관계조차도 1-N 릴레이션의 하위 엔티티 목록을 자동으로 채 웁니다.
그러나 나는 다음과 같은 코드를 사용하여 데이터를 삽입 할 때 :하지만, 나는이 IsDbGenerated
플래그를 제거하면
"Missing semicolon (;) at end of SQL statement."
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader()
at System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult)
at System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries)
at System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query)
at System.Data.Linq.ChangeDirector.StandardChangeDirector.DynamicInsert(TrackedObject item)
at System.Data.Linq.ChangeDirector.StandardChangeDirector.Insert(TrackedObject item)
at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
at System.Data.Linq.DataContext.SubmitChanges()
at MyClass.Test() in C:\...\MyClass.cs:line 123
, 그것은 충돌하지 않습니다 나는 다음과 같은 오류가
[Table(Name = "test_table")]
public class test_item {
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int field1;
[Column]
public int field2;
}
public void Test() {
Table<test_item> tbl = this.GetTable<test_item>();
test_item x = new test_item();
x.field2 = 1222;
tbl.InsertOnSubmit(x);
this.SubmitChanges();
}
을 이 경우 기본 키 (x.field1 = 55
)를 지정해야하지만 자동으로 할당되기를 바랍니다.
이 예외가 발생하지 않도록하려면 어떻게해야합니까?
불행히도 EF는 MS Access를 지원하지 않습니다. – Igor