Tag: c#

为什么我们的项目需要接口层/抽象类?

我们通常在项目中使用抽象函数/接口。 为什么真的需要它? 为什么我们不能只去商业逻辑层,数据访问层和表示层 表示层中的function: abc(); 业务逻辑层中的function: public void abc() { //Preparing the list } 数据访问层中的function: public abstract void abc(); 数据访问SQLServer层中的function: public override void abc() { //Connection with database } 问题是:为什么需要数据访问层?

来自List 的SqlBulkCopy

如何从简单对象的List 中使用SqlBulkCopy进行大插入? 我是否实现了自定义IDataReader?

将List 连接到ListBox并查看ListBox中数据源的更改

我希望当我删除或添加一个对象到我用作其DataSource的列表时, ListBox自动显示更改。 如何将List连接到ListBox并立即查看ListBox中基础列表的更改?

为什么不包含有什么影响?

我正在做以下LINQ查询,但它不会返回导航属性Person填充,我得到null 。 public IEnumerable GetSharePeopeByCarId(int carId) { return from q in _context.Cars join s in _context.Shares on q.CarId equals s.Car.CarId join p in _context.SharePeople.Include(p => p.Person) on s.ShareId equals p.ShareId where q.CarId == carId select p; } 我不知道为什么,因为当我使用像_context.SharePeople.Include(p => p.Person)这样的常规扩展方法时,它可以工作。

ASP.NET Identity的默认密码哈希 – 它是如何工作的并且是否安全?

我想知道在MVC 5和ASP.NET Identity Framework附带的UserManager中默认实现的Password Hasher是否足够安全? 如果是这样,如果你可以向我解释它是如何工作的? IPasswordHasher界面如下所示: public interface IPasswordHasher { string HashPassword(string password); PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string providedPassword); } 正如你所看到的,它不需要盐,但是在这个post中提到:“ Asp.net身份密码哈希 ”,它确实在幕后加盐。 所以我想知道它是如何做到的? 这盐来自哪里? 我担心的是盐是静态的,使它非常不安全。

跨线程操作无效

可能重复: 跨线程操作无效:从创建它的线程以外的线程访问控制 好的,我知道为什么这会给我这个错误: 跨线程操作无效:控制从其创建的线程以外的线程访问的“Form1”。 但是……我怎样才能使这个可行? System.Threading.Thread t = new System.Threading.Thread(()=> { // do really hard work and then… listView1.Items.Add(lots of items); lots more UI work }); t.Start(); 我不关心Thread何时或如何完成,所以我并不关心任何花哨或过于复杂的atm,除非它在使用新线程中的UI时会更容易。