我之前一直在使用Microsoft企业库,因为它被标记为抽象数据访问,而不是编写我自己的DAL.最初我只是将一个文件(sqlhelper.cs)导入到我的项目中,但后来的版本要求我引用整个dll,除非我想在删除我想要的功能方面投入大量的工作.
我假设在.NET 4.0发布几个月后将发布新版本的Enterprise Library.我公司对库的使用可能与传统用途不同,我们为许多客户设计和开发Web和Windows应用程序.我们要么将完成的项目交给内部开发人员维护,要么是小型客户端,我们将维护应用程序.
由于业务的性质,我有幸在设计新应用程序时"从头开始"大量时间,而不是与更新相同的代码库相关联.如果我们再次使用Microsoft Enterprise Library,下一个项目我可能会问自己同样的问题吗?我们只使用数据访问块,它似乎在开发过程中节省了时间.与此同时,我想知道通过使用对象添加到项目中的开销和复杂程度是多少.
提前感谢您的建议.
这里的讨论确实让我重新考虑了这个问题 - 它可能不是关于访问存储过程的轻量级抽象,而是关于为什么我们仍然依赖于N-Tier模型的更大的架构问题.
对我来说,如果归结为应用程序中使用的数据库.在经典的3层/ N层世界中,数据库是公司信息的独立存储.不同的应用程序(Web,桌面等)都共享和访问公共存储平台.在这种情况下,存储过程是有意义的,因为它们充当各种应用程序和表之间的抽象层.
对于其他项目,数据库是较大应用程序的独占持久存储.UI或其他类型的访问(包括Web服务,远程处理等)需要通过应用程序的BLL.由于我们业务的性质,这是我们更常开发的方案.
鉴于这个结论,我将创建两个原型项目,一个使用SubSonic,另一个使用LINQ.虽然我担心LINQ的开销和丢失保真度,但是数据访问所需代码的显着减少以及我们开发的项目类型的一致性使其值得一看.
是否有与Windows GetLastInputInfo()
API 等效的.NET ?
我知道P/Invoke API是可能的,但我正在寻找已经内置在.NET框架中的方法或技术.
我有一个附加列表元素的页面.如何确定该列表中的项目数?可以使用渲染标签,asp或任何其他技术(只要它有效!)
我有一个FTP客户端类,它返回指向文件的InputStream.我想用BufferedReader逐行读取文件.问题是,客户端以二进制模式返回文件,并且该文件具有ISO-8859-15编码.
嗨专家,我有这个控制器代码,抛出上述错误.它工作正常,直到昨天,我不知道同事对此代码做了什么,今天我看到错误:
BindingResult和bean名称'sideForm'的普通目标对象都不可用作请求属性
你能告诉我在哪里寻找这种错误吗?我在POST或GET方法声明中犯了什么错误或者返回错误了吗?
非常感谢您的帮助:)
package com.att.analytics.ui;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.si.myworld.business.AdminChart;
import com.si.myworld.business.Chart;
import com.si.myworld.dao.AdminChartSummaryData;
import com.si.myworld.dao.BulletinData;
import com.si.myworld.dao.ChartData;
@RequestMapping("/index.html")
@Controller
public class IndexController {
private static final Logger log = Logger.getLogger(IndexController.class);
/**
* Called to load the page initially (GET request)
*
* @param model
* @return
*/
@RequestMapping(method = RequestMethod.GET)
public String getCharts(ModelMap model) {
Chart chart = new Chart();
chart.setTimeline("Monthly"); …
Run Code Online (Sandbox Code Playgroud) 我有一个Django产品,我正在使用iPython进行交互.
我正在尝试在启动shell时自动加载模块:
python manage.py shell
我已将.ipython/ipythonrc复制到项目的根目录并添加到文件中:
import_some module_name model1 model2
但是,当我启动shell时,这些名称没有被加载.
我究竟做错了什么?
我有一个任务,它有(其中包括)两个要求:
我正在使用VS9(2008)快递,我想我可以做安装程序部分,但我不知道如何做"安全"部分.我不需要任何难以破解的安全性,只是一个愚蠢的条件,将阻止大多数用户将文件复制到另一台计算机.(比如检查MAC地址).
有任何想法吗?
编辑:
我想检查MAC地址,但我希望程序在安装过程中完成.这意味着我安装后无法将程序移动到另一台机器.它也不一定非常聪明或困难,只是最低限度.我只是不知道如何在安装中做到这一点.
编辑:
很遗憾我没有完整的VS然后我可以轻松地完成它.
Scala中使用Java进行此类操作的模拟是什么:
public class Outer {
private Inner inner;
public static class Inner {
}
public Inner getInner() { return inner; }
}
Run Code Online (Sandbox Code Playgroud)
我特别希望我的内部阶级不必拥有一个完全限定的名字 - 即我想要的Trade.Type
,不是TradeType
.所以在Scala我想象它可能是这样的:
class Outer(val inner: Inner) {
object Inner
}
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用:我的scala Inner
似乎从课外看不出来Outer
.一个解决方案当然是:
class Inner
class Outer(val inner: Inner)
Run Code Online (Sandbox Code Playgroud)
这是确定-但因为我的课的名字,Inner
真是的"类型" Outer
和Outer
实际上有一个很长的名字.所以:
class SomeHorriblyLongNameType
class SomeHorriblyLongName(myType: SomeHorriblyLongNameType)
Run Code Online (Sandbox Code Playgroud)
这是冗长而可怕的.我可以SomeHorriblyLongNameType
用just 替换,Type
但是它与它所涉及的类之间没有明显的联系.表示不快
EntityManager.merge()
可以插入新对象并更新现有对象.
为什么要使用persist()
(只能创建新对象)?
我正在使用PHP in_array()函数,以便在用户可以访问特定页面时进行身份验证(使用会话).出于某种原因,它不起作用......
session_start();
require_once('../scripts/functions.php');
$role_auth = @$_SESSION['role_auth'];
access($role_auth, array(0,1,2,3,4));
Run Code Online (Sandbox Code Playgroud)
function access($role_auth, $array){
if(!(in_array($role_auth, $array))){
header("Location: ../index.html");
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在函数中插入print语句,我可以看到所有正确的值都被传递给函数.问题是,如果在没有设置会话变量的情况下调用函数,由于某种原因,它被认为是在数组中,并且它进行了身份验证.
有任何想法吗?