我的公司拥有十几个网站和独立的数据库(相同的模式).每个客户都有自己的网站(不同的应用程序池)和数据库.
每个网站都有自己的配置,多个连接字符串,但它们都具有相同的配置架构.
cust1.domain.com
cust2.domain.com
cust3.domain.com
我们希望将所有网站合并为一个(单个应用程序池)并保留隔离的数据库,以确保安全性和大量数据.
设计DAL和配置它的最佳实践是什么?如果大量的租户将在同一时间,它的含义是什么?一个应用程序池可以管理这种情况,还是可以以某种方式管理它?
顺便说一下,我们使用asp-membership进行用户身份验证.
在此先感谢,艾迪
我正在尝试使用DotNetNuke中的DAL2访问数据.当我使用repository.Get()来获取某个表的所有字段时,我有时会收到此错误:
'价值不能为空.参数名称:con'
public IEnumerable<SitesProvince> GetAll()
{
using (var ctx = DataContextContent.Instance())
{
var rep = ctx.GetRepository<SitesProvince>();
return rep.Get();
}
}
Run Code Online (Sandbox Code Playgroud)
模型:
[TableName("Sites_Province")]
[PrimaryKey("Sites_Province_No")]
[Cacheable("Sites_Province", CacheItemPriority.Default, 20)]
[Scope("Sites_Province_No")]
public class SitesProvince
{
public int Sites_Province_No { get; set; }
public string BU { get; set; }
public string Province { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?在某些查询中,它有效,有些则没有,我认为方法之间没有任何区别.
我找到了这个,但我没有合同:http: //clraddins.codeplex.com/discussions/24568
我尝试使用 ScalikeJDBC 访问 PostgreSQL 9.4 中的数组。DDL:
create table itab (
code varchar primary key,
group_list varchar[]
);
Run Code Online (Sandbox Code Playgroud)
在 Scala 应用程序中定义了一个简单的案例类和加载器。
case class Item(code: String, groupSet: List[String])
trait loader {
def loadAllItems: List[Item] = {
insideReadOnly { implicit session =>
sql"select CODE, GROUP_LIST from ITAB"
.map(e => Item(
e.string("code"),
e.array("group_list").asInstanceOf[Buffer[String]]
)).list.apply()
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行一个应用程序时,我得到运行时异常
java.lang.ClassCastException: org.postgresql.jdbc4.Jdbc4Array cannot be cast to scala.collection.mutable.Buffer
Run Code Online (Sandbox Code Playgroud)
我该如何解决?谢谢。霍维曼。
是否有.Net O/R(对象/关系)Mappers提供开箱即用的异步方法?
如果可能的话,我不想为异步方法编写锅炉板
我使用CCR框架使用异步方法编译了自己的DAL.CCR基本上要求我不阻止任何等待IO响应的线程.
到目前为止,关于我的解决方案的好处在于它是最低限度的.但随着这个项目在规模和功能方面的增长,我面临着维护原始SQL查询和样板代码的轻微艰巨任务.
但另一方面,如果O/R映射器异步方法真的只是一个混乱的黑客,增加了复杂的奇怪,我不会更好.
请不要关注异步编程的替代方案.
在我的SOA架构中,我有几个WCF服务.
我的所有服务都需要访问数据库.
我应该创建一个专门负责所有数据库访问的WCF服务吗?
或者,如果我的每个服务都有自己的数据库访问权限,这样可以吗?
在一个版本中,我只在一个服务中实例化了一个实体层,而所有其他服务都依赖于此服务.
在另一个实体中,实体层在我的每个服务中都是重复的.
第一个版本的主要缺点是引起的耦合.
另一个版本的缺点是层重复,可能是SOA不好的做法?
那么,Stack Overflow的优秀人物是怎么回事?
我们最近将审核添加到了数据库中。一位同事使用触发器将其实现,并要求我在登录网站时调用存储过程。该存储过程将当前用户名和当前oracle会话ID插入表中,以便触发器可以将会话ID映射到用户名。问题是(或曾经)他假设用户的Internet会话已映射到数据库会话。事实并非如此,我们使用连接池,因此oracle会话ID可以映射到许多用户,而不必映射到在该会话上登录的用户。因此,我在数据访问层中创建了一个实用程序方法,该方法在每次插入,更新和删除时都调用他的过程(确保它在同一事务中):
/// <summary>
/// Performs an insert, update or delete against the database
/// </summary>
/// <param name="transaction"></param>
/// <param name="command">The command.</param>
/// <param name="transaction">A transaction, can be null.
/// No override provided without a transaction, to remind developer to always consider transaction for inserts, updates and deletes</param>
/// <returns>The number of rows affected by the operation</returns>
public static int InsertUpdateDelete(OracleCommand command, OracleTransaction transaction)
{
if (command == null)
throw new ArgumentNullException("command", "command is null.");
OracleConnection connection = null;
bool …Run Code Online (Sandbox Code Playgroud) 我们都熟悉带有关系数据库的基本ORM:一个对象对应于一行,而该对象中的属性对应于一列,尽管许多ORM都增加了很多麻烦。
我想知道还有什么其他选择(除了对数据的原始访问)。仅适用于关系数据库的替代方案会很好,但是以统一的方式,除了SQL以外,还可以与多种类型的后端配合使用的替代方案(如平面文件,RSS,NoSQL等)会更好。我对想法更感兴趣,而不是特定的植入方法以及它们使用的语言/平台,但请链接到您认为有趣的任何内容。
我们需要在两个不同的数据库中查询数据(SQL Server中的1个和Oracle中的其他数据库).
以下是需要实施的方案:
我们正在使用的技术:ASP.net,C#
我们考虑过的选项:
我想知道处理这种情况的最佳设计策略是什么?如果是,那么该方法的优缺点是什么
我最近加入了一家使用类型化数据集作为'Dto'的公司.我认为它们真的很垃圾,并希望将它改成更现代和用户友好的东西.所以,我正在尝试更新代码,以便数据层更通用,即使用接口等,另一个人不知道Dto是什么,我们对如何完成它有轻微的分歧.
如果不试图让人们思考我的思维方式,我想向你们提供关于Dto可以存在的层次的公正答案.DAL,BL和Presentation或仅在这些图层中设置一个小子集.
此外,是否应该或不应该在DAL中存在IList对象.
谢谢.
我正在从头开始编写一个新的网站项目.该项目在C#中,但我的背景是在PHP中(下面的伪代码有点混合,试图简洁和声明).
问题
我需要从两个地方之一检索配置数据 - 有时从本地数据库,有时从Soap服务.我应该能够从任一源创建同一组Model对象.
数据存储在不同数据源中完全不同的结构中 - 需要从Soap端拼凑出几个不同的Soap响应,而DB结构更接近于我在代码中构建模型对象的方式.
配置由对象树组成:产品包含属性,其中包含选项,这些选项具有应用时间的条件.
目标
我想尽可能地分开关注点(希望能够促进测试/维护/扩展能力):
问题
我知道各种各样的设计模式(虽然我不完全确定我完全理解它们).我向程序员提出了一个与此类似的问题,得到了关于Persistence Ignorance(更多信息)和Repository模式的回复,它们似乎都是来自Microsoft世界的概念.
据我所知,"Persistence Ignorance"只是让Model对象对你的数据存储机制一无所知的概念,而Repository模式看起来与Data Mapper模式非常相似,只不过它可能更像是一个外观,隐藏更多实际发生的事情.
所以我的问题是:
在Data Mapper模式中,每个Model对象应该有一个Mapper吗?而不是一个整个配置树?
因此,我应该有一个使用所有Mapper对象的配置树构建对象吗?
class ConfigBuilder() {
public ConfigBuilder (productMapper, propertyMapper, optionMapper, conditionMapper) {
// save them into local properties
}
public Products() {
var products = productMapper.FetchAll();
foreach (var product in products) {
AddProperties(product);
}
return …Run Code Online (Sandbox Code Playgroud) c# model-view-controller design-patterns data-access-layer datamapper
c# ×4
architecture ×2
.net ×1
arrays ×1
asp.net ×1
asynchronous ×1
audit ×1
datamapper ×1
dotnetnuke-7 ×1
iis ×1
multi-tenant ×1
or-mapper ×1
oracle ×1
orm ×1
postgresql ×1
scala ×1
scalikejdbc ×1
soa ×1
sql ×1
sql-server ×1
wcf ×1