我正在使用Entity Framework 5.0与DbContext和POCO实体.有一个包含3个属性的简单实体:
public class Record
{
public int Id { get; set; }
public string Title { get; set; }
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Title字段始终未修改,UI只显示它而不提供任何输入框来修改它.这就是将表单Title设置为null将表单发送到服务器的原因.
以下是我告诉EF执行实体的部分更新的方法(IsActive仅限字段):
public class EFRepository<TEntity>
{
...
public void PartialUpdate(TEntity entity, params Expression<Func<TEntity, object>>[] propsToUpdate)
{
dbSet.Attach(entity);
var entry = _dbContext.Entry(entity);
foreach(var prop in propsToUpdate)
contextEntry.Property(prop).IsModified = true;
}
}
Run Code Online (Sandbox Code Playgroud)
和电话:
repository.PartialUpdate(updatedRecord, r => r.IsActive);
Run Code Online (Sandbox Code Playgroud)
调用SaveChanges方法,我得到的DbEntityValidationException,告诉我,Title是必需的.当我设置dbContext.Configuration.ValidateOnSaveEnabled = false …
我有一个带有一些表单字段的第三方PDF文件,我需要以编程方式填写.PDF文件是安全的.详细的安全设置:SecurityMethod: Password Security, Document Open Password: No, ... Form Field Fill-in or Signing: Allowed...
当我尝试手动打开并填写文档时,一切正常,我不会被要求输入任何密码.但是使用代码时,它会失败并出现异常.这是代码(我正在使用iTextSharp库):
var str = new MemoryStream();
var reader = new PdfReader(_path);
var stamper = new PdfStamper(reader, str);
Run Code Online (Sandbox Code Playgroud)
创建PdfStamper对象失败,但有异常: BadPasswordException. PdfReader not opened with owner password.
任何想法,为什么它失败的代码,但不是手动?提前致谢.
我是我的数据模型中的两个实体,例如用户和角色,都具有ID字段作为主键。它们之间存在多对多的关系。在数据库中,有三个表:Users,Roles和UsersRoles连接表。
我正在尝试向Users表添加一个新用户:
using(var myContext = new MyContext)
{
var user = new User() { ... };
user.Roles.Add(new Role() { ID = 1 });
}
Run Code Online (Sandbox Code Playgroud)
相同的角色可能已经被其他用户使用,因此,当我尝试添加具有相同角色的新用户时,由于EF尝试向角色表中添加新记录,所以我成为主键冲突。
有什么方法可以告诉实体框架(如果角色已经存在,则不向角色表中添加新记录,而仅更新Users和UserRoles表)?EF 1.0版
提前致谢。