[英]Weird error Inserting With Linq to SQL
我在使用Linq To SQL插入行時遇到一個奇怪的問題,被要求編寫一個不使用Entity Framework的程序,因此我正在弄清楚如何做到這一點,並且正在關注Linq to SQL教程。
當我嘗試插入一行時,出現此異常:
System.Data.SqlServerCe.SqlCeException:沒有列的修改。 [列名稱= id]
Linq是否要嘗試修改列?,這是我的實體,當我刪除“ Association
字段時,我可以毫無問題地堅持下去。
[Table(Name="Usuario")]
public class Usuario
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert,Name="id")]
public int id { get; set; }
[Column]
public string nombre { get; set; }
[Column]
public string direccion { get; set; }
[Column]
public string telefono { get; set; }
[Column]
public string codigoPostal { get; set; }
private EntityRef<Ciudad> _ciudad;
[Association (Storage="_ciudad",ThisKey="ciudad",OtherKey="id")]
public Ciudad ciudad {
get {return this._ciudad.Entity;}
set { this._ciudad.Entity = value; }
}
private EntityRef<TipoUsuario> _tipoUsuario;
[Association (Storage="_tipoUsuario",ThisKey="tipoUsuario",OtherKey="id")]
public TipoUsuario tipoUsuario {
get {return this._tipoUsuario.Entity;}
set { this._tipoUsuario.Entity = value; }
}
}
更新:
這是我要堅持的時候:
public override void agregar(Usuario obj)
{
System.Data.Linq.Table<Usuario> usrs = context.GetTable<Usuario>();
usrs.InsertOnSubmit(obj);
try
{
context.SubmitChanges();
}
catch (Exception e)
{
}
}
這是我的控制器:
public class UsuarioController : Controller
{
UsuarioRepository dao = new UsuarioRepository();
...
[HttpPost]
public ActionResult Create(Usuario u)
{
//try
//{
dao.agregar(u);
return RedirectToAction("Index");
//}
//catch
//{
// return View();
//}
}
...
}
“ Id”列均設置為PrimaryKey和DbGenerated。 可能在以某種方式插入“ obj”對象之前,您正在修改導致此異常的Id的值。
最后我做了這項工作
問題出在我的存儲上,實際上,由於指向自身,它會導致stackoverflow異常。
因此,我必須進行一些更改,在“ Usuario”表上重命名我的FK列,並將此列添加到我的模型中,然后設置“ thiskey”和“ otherkey”值,並添加“ isforeignkey = true”。
這是我對“ usuario”的最終模型:
namespace Project.Models
{
[Table(Name="Usuario")]
public class Usuario
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int id { get; set; }
[Column]
public string nombre { get; set; }
[Column]
public string direccion { get; set; }
[Column]
public string telefono { get; set; }
[Column]
public string codigoPostal { get; set; }
[Column]
public Int32 tipoUsuarioId { get; set; }
[Column]
public Int32 ciudadId { get; set; }
private EntityRef<Ciudad> _ciudad;
[Association(Storage = "_ciudad", Name = "FK_USUARIO_CIUDAD", OtherKey = "id", ThisKey = "ciudadId", IsForeignKey = true)]
public Ciudad ciudad {
get {return this._ciudad.Entity;}
set { this._ciudad.Entity = value; }
}
private EntityRef<TipoUsuario> _tipoUsuario = new EntityRef<TipoUsuario>();
[Association (Storage="_tipoUsuario",Name="FK_USUARIO_TIPOUSUARIO",OtherKey="id",ThisKey="tipoUsuarioId",IsForeignKey=true)]
public TipoUsuario tipoUsuario {
get {return this._tipoUsuario.Entity;}
set { this._tipoUsuario.Entity = value; }
}
}
感謝@aminexplo的幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.