由于某种原因,我在db.SaveChanges();指令中收到以下错误:
Cannot insert the value NULL into column 'UserId', table 'XXXXXXXXX_Dev.dbo.Portfolios'; column does not allow nulls. INSERT fails.
The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)
控制器代码:
[HttpPost]
[Authorize]
public ActionResult Create(Portfolio portfolio)
{
if (ModelState.IsValid)
{
portfolio.UserId = (Guid)Membership.GetUser().ProviderUserKey;
db.AddToPortfolios(portfolio);
db.SaveChanges();
}
return View("MyPortfolios");
}
Run Code Online (Sandbox Code Playgroud)
我已经通过调试器并确认正在填充UserID.
更新:
我试图改变db.AddToPortfolios(portfolio);到db.Portfolios.AddObject(portfolio);,但它仍然有同样的问题.
Portfolios是一个ObjectSet,我应该使用这个Attach()方法吗?
我正在我的项目中进行DAO单元测试,我在使用ObjectSet该类时遇到了问题.我必须创建一个新的,ObjectSet但为了做到这一点,我不能连接到数据库.所以我不能使用BusinessModelContainer的CreateObjectSet()方法.有没有办法创造ObjectSet没有它?
单元测试代码如下:
var mock = new Mock<IBusinessModelContainerWrapper>();
ObjectSet<Student> expectedStudent = ???; // how can I get an instance here?
StudentDao studentDao = new StudentDao(mock.Object);
expectedStudent.Add(someObj);
mock.Setup(c => c.Students).Returns(expectedStudent);
Assert.AreEqual(someObj, studentDao.GetByQuery(...));
Run Code Online (Sandbox Code Playgroud) 我正在尝试EF 4.0.我有一个Employee对象并使用EF我只是通过调用获取Employee ObjectSet
Context.Employees
现在上面的调用将在sql查询后吐出
select * from Employees
上面的查询工作正常,我没有任何抱怨,但是你知道如果你在表中有数百万条记录就不会有足够的性能,它肯定会影响性能.
那么我试图想出一种方法来给我的ObjectSet一个范围,我可以说一些东西,比如从Employee ObjectSet中获取30到60个记录.
有没有办法做这样的事情.
任何建议都将深表感谢.
更新: 我正在尝试这样做,以便根据页面索引返回20个Employees(页面大小).
提前致谢.NIK ...
我使用:EntityFramework + POCO
这是事情:
public interface IBaseType
{
int Id { get; set; }
}
public class BaseType : IBaseType
{
public virtual int Id { get; set; }
}
public class DerivedType : BaseType
{
}
Run Code Online (Sandbox Code Playgroud)
问题:
public class EntityFetcher<T> where T : BaseType
{
public object GetById(int id)
{
ObjectSet<T> objectSet = (ObjectSet<T>)GetTheObjectSet(typeof(T));
return objectSet.SingleOrDefault((o) => o.Id == id);
}
}
Run Code Online (Sandbox Code Playgroud)
如果T是BaseType这一切完美的作品,但是:问题是,在当的EntityFramework一个类继承了另一个他们分享的ObjectSet,因此,如果T是DerivedType则GetTheObjectSet返回ObjectSet<BaseType>,不能被强制转换为ObjectSet<DerivedType>. …