我正在制作一个基于实体框架的小型控制台应用程序,我试图访问我存储在计算机中的SQLServer数据库并在其中一个表中添加一行。事情是我尝试运行程序db.SaveChanges();抛出EntityException,即使我用try / catch包围它并且代码在没有任何编译错误的情况下工作,数据也不会保存在数据库中,而是进入catch代码并写入行"没有工作" 。这是代码:
using System;
using System.Collections.Generic;
using System.Data.Entity.Core;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleAchei
{
class Program
{
static void Main(string[] args)
{
using (var db = new AcheiEntities2())
{
var cliente = new Cliente()
{
ID = 1,
NOME = "Fan 123",
EMAIL = "SDASDAS@gmail.com",
SENHA = "ASHDUASDHUAS"
};
try
{
db.Cliente.Add(cliente);
db.SaveChanges();
}
catch (EntityException e)
{
Console.WriteLine("Didn't work");
Console.ReadKey();
}
}
}
}
}
与数据库的连接工作正常。我只是不知道为什么会抛出这个异常。我基于这段视频https://www.youtube.com/watch?v=o-cV_fSNMqw并且他甚至不需要用try / catch包围它。也许有些兼容性问题? (视频使用实体4.0,我使用5.0)。任何帮助将不胜感激。
答案 0 :(得分:1)
EntityException
可以是任何东西。
但我会改变
var cliente = new Cliente()
{
ID = 1,
NOME = "Fan 123",
EMAIL = "SDASDAS@gmail.com",
SENHA = "ASHDUASDHUAS"
};
到
var cliente = new Cliente()
{
NOME = "Fan 123",
EMAIL = "SDASDAS@gmail.com",
SENHA = "ASHDUASDHUAS"
};
可能您使用SQL Identity设置了ID
,但无法手动设置
添加数据注释[Key]
或[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
或者如果您使用的是Fluent API:
modelBuilder.Entity<Cliente>().Property(s => s.ID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);