我不知道在哪裏/如何搜索這個問題,所以我認爲要求的最大打賭就是通過stackoverflow的comminuty。訪問類
基本上我正在設計一個項目,它將簡單地提供一個LINQ to SQL模型的邏輯項目訪問權限,以在數據庫上執行CRUD。所以數據的項目中我有LINQ到SQL模型類和C#類來提供訪問模型如下圖所示
public class Connection : IDisposable
{
private DataModelDataContext _model;
public DataModelDataContext model
{
get { return _model; }
set { throw new Exception("Object \"model\" is not allowed to be created outside of its container class", new NotSupportedException()); }
}
public Connection(string username, string password)
{
User u = _model.Users.Where(u => u.Username == username && u.password == u.Password);
if (u == null)
throw new ApplicationException("User credentials are invalid", new AuthenticationException());
_model = new DataModelDataContext();
}
public void refreshAndKeepChanges(object entity)
{
_model.Refresh(RefreshMode.OverwriteCurrentValues, entity);
}
public int getChangesCount()
{
return _model.GetChangeSet().Deletes.Count() + _model.GetChangeSet().Inserts.Count() + _model.GetChangeSet().Updates.Count();
}
public void Dispose()
{
_model.SubmitChanges();
_model.Dispose();
}
}
我想,當我編譯DLL是邏輯的項目有訪問Connection類(上面)但不訪問DataModelDataContext(因爲這會打敗傳遞用戶憑據的對象)。我的問題是如何暴露連接類(作爲公衆,我已經完成),但隱藏從DLL的LINQ到SQL數據模型,但允許連接類訪問它?
對LINQ to SQL模型使用額外的命名空間不起作用,我發現添加DLL允許訪問項目中的所有命名空間。
如果setter一直拋出異常,爲什麼不把它刪除呢?另外,你使用內部異常真的很奇怪。 InnerException的概念是描述產生異常的錯誤。如果你只是新增了兩個異常,那麼使用內部異常沒有任何意義。 – senfo
我將更詳細地使用InneException,它只是還沒有實現,我只是使用setter中的異常代碼來顯示如果DLL的用戶嘗試設置_Model(Model)對象,我將拋出異常 –