小编Bob*_*ock的帖子

迭代类字段并打印它们

如果我有一个类似的类

public class User{
            public int Id { get; set; }
            public int Reputation { get; set; }
            public string DisplayName { get; set; }
            public DateTime LastAccessDate { get; set; }
            public DateTime CreationDate { get; set; }
            public string WebSiteUrl { get; set; }
            public int Views { get; set; }
            public int Age { get; set; }
            public int UpVotes { get; set; }
            public int downVotes { get; set; }
            public string Location { get; set; …
Run Code Online (Sandbox Code Playgroud)

c#

21
推荐指数
1
解决办法
2万
查看次数

优化nhibernate会话工厂,webApp的启动时间确实很慢

我已经实施了测试应用.它使用流畅的nhibernate映射到mssql db中的db对象.因为我想学习微调nhib.mvc3应用程序,我正在使用这个应用程序.用于测试目的,它只有一个带有10个枚举属性和一个字符串属性的简单实体.所以,它实际上是光波,但根据nhibernate profiler的启动时间是4.37秒.这对于渲染一个具有少量行检查/未检查属性的实体来说真的很慢.

代码如下. Domain.SessionProvider.cs

public static ISessionFactory CreateSessionFactory()
{
   var config = Fluently.Configure()
          .Database(MsSqlConfiguration.MsSql2008
          .ConnectionString(c => c.FromConnectionStringWithKey("myConnection")))
          .Mappings(m => m.FluentMappings.Add<FeaturesMap>())
          .ExposeConfiguration(p => p.SetProperty("current_session_context_class", "web"))
          .BuildConfiguration();

          return config.BuildSessionFactory();            
}
Run Code Online (Sandbox Code Playgroud)

Global.asax中

public class MvcApplication : System.Web.HttpApplication
{   
   //SessionPerWebRequest is ommited here as well as other content
   public static ISessionFactory SessionFactory =
               SessionProvider.CreateSessionFactory();

    protected void Application_Start()
    {
       SessionFactory.OpenSession();
    }
}
Run Code Online (Sandbox Code Playgroud)

在myController里面我有以下内容:

public ActionResult Index()
{
   return View(GetData());
}

private IList<FeaturesViewModel> GetData()
{
     List<Features> data;
     using (ISession session = MvcApplication.SessionFactory.GetCurrentSession())
     {
          using (ITransaction …
Run Code Online (Sandbox Code Playgroud)

c# nhibernate fluent-nhibernate asp.net-mvc-3

18
推荐指数
1
解决办法
6336
查看次数

流利的Nhibernate映射hasMany

在我的MSSQL中,我有两个表,Property和Photo.

为了缩短它,我将在这里写几个字段.属性表

Id int not null
Title nvarchar(255) not null
PhotoId int not null
Run Code Online (Sandbox Code Playgroud)

照片桌

Id int not null
ImageData varbinary(MAX) null
ImageMimeType varchar(50) null
Run Code Online (Sandbox Code Playgroud)

关系如下:

FK_Property_Photo

Primary Key table        Foreign key table
--------------------------------------------
Photo                    Property
--------------------------------------------
Id                       PhotoId
Run Code Online (Sandbox Code Playgroud)

你可以想象一个属性可以有一个或多个图像.一个图像可以属于一个或多个属性.

我尝试过这种映射

public PropertyMap()
{
  Table("Property");
  Id(x => x.Id).GeneratedBy.Identity();
  Map(x => x.Title).Length(255).Not.Nullable();
  HasMany(x => x.Photos).KeyColumn("Id");
}

public PhotoMap()
 {
    Table("Photo");
    Id(x => x.Id).GeneratedBy.Identity();
    Map(x => x.Version);
    Map(x => x.ImageData).CustomSqlType("VARBINARY(MAX)").Length(160000);
    Map(x => x.ImageMimeType);
 }
Run Code Online (Sandbox Code Playgroud)

c# mapping nhibernate fluent-nhibernate

9
推荐指数
1
解决办法
3万
查看次数

如何在pdo-> query中添加变量值

我想升级我的当前代码,这是不断用PDO注入的SQL.

目前我一直坚持在PDO查询中使用变量.

如果我有这样的两个论点

  $rowsPerPage = 3;

  // by default we show first page
  $pageNum = 1; 

  if (isset($_GET['page'])) {
     $pageNum = mysql_real_escape_string($_GET['page']);
  }

  $offset = ($pageNum - 1) * $rowsPerPage;
Run Code Online (Sandbox Code Playgroud)

我有这样的查询

$STH = $DBH->query("SELECT News.ID, LEFT(NewsText,650), Title, AID, Date, imgID," .
        "DATE_FORMAT(Date, '%d.%m.%Y.') as formated_date " .
        "FROM News, Categories, NewsCheck  WHERE Name LIKE '%News - Block%' AND CID=Categories.ID AND JID=News.ID ". 
        "ORDER BY `Date` DESC LIMIT $offset, $rowsPerPage");
Run Code Online (Sandbox Code Playgroud)

PDO在查询的最后一行报告错误ORDER BY当我用"ORDER BY Date DESC LIMIT3,3");一切工作替换这些行时 .

那么如何在PDO :: …

php pdo

8
推荐指数
1
解决办法
2万
查看次数

NHibernate探查器不会获取我的会话

我刚刚下载了nhibernate profiler,我无法理解为什么它不起作用.据我所知,在选项 - 编辑默认连接中设置连接字符串应该足够了.

我正在使用sql server,我已经复制了我的连接字符串

Data Source=.\SQLEXPRESS;Initial Catalog=DB_xxx_MyDb;Integrated Security=True;
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的调试模式下,我在执行我的应用程序时没有任何内部nhibernate profiler.

更新: 添加了对我的mvc3项目的引用

HibernatingRhinos.Profiler.Appender.v4.0.dll
Run Code Online (Sandbox Code Playgroud)

Global.asax中

protected void Application_Start()
{
   AreaRegistration.RegisterAllAreas();
   RegisterGlobalFilters(GlobalFilters.Filters);
   RegisterRoutes(RouteTable.Routes);
   #if DEBUG
   HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
   #endif
}
Run Code Online (Sandbox Code Playgroud)

我做了以下步骤

  1. 启动NhProf.exe
  2. 开始调试mvc app,我想要分析这些应用查询

Nhibernate Profiler中没有任何内容.许可证工作32天.为什么?我还该怎么办?

第二次更新: 我尝试参考HibernatingRhinos.Profiler.Appender.dll仍然没有工作.尝试使用options-settings-listen port来设置我的asp开发.服务器端口,现在是5442.仍然没有.我有点困惑.

只是提到我的应用程序工作,我的连接字符串工作,我能够从我的数据库中获取数据,...

我在NHProfiler文件夹中的log.txt文件有这个内容

2012-03-28 20:31:01,374 [1] INFO  Rhino.Licensing.LicenseValidator [(null)] - License expiration date is 04/29/2012 00:00:00
2012-03-28 20:31:01,662 [1] DEBUG Rhino.Licensing.LicenseValidator [(null)] - License accepted for NHibernate Profiler
2012-03-28 20:31:02,461 [6] INFO  HibernatingRhinos.Profiler.Client.App [(null)] - Checking for updates...
2012-03-28 20:31:25,072 [4] ERROR …
Run Code Online (Sandbox Code Playgroud)

nhibernate

5
推荐指数
1
解决办法
4025
查看次数

ViewModel是否会降低Web应用程序的性能

据我所知,使用视图模型可以使web开发.生活更容易,从某种意义上说,我们可以使用这种方法只显示本地化字符串中所需的属性.我也在mvc3视图模型中使用jquery验证等.

现在我有点怀疑,因为我的webapp中存在真正的瓶颈.查询所有对象(其中20个)就像这样

 List<Domain.Property> data = session.Query<Domain.Property>().ToList();    
 return PropertyViewModel.FromDomainModel(data);
Run Code Online (Sandbox Code Playgroud)

并且Property对象列表被发送到我的ViewModel,其中是FromDomainModel,它需要List of Property对象,如下所示

List<PropertyViewModel> dataVm = new List<PropertyViewModel>();
{
            foreach (Property p in x)
            {
                dataVm.Add(new PropertyViewModel(p));
            }
            return dataVm;
}
Run Code Online (Sandbox Code Playgroud)

现在和我正在使用的同一个班级

public PropertyViewModel(Property x)
        {
            Id = x.Id;
            Created = x.Created;
            Title = x.Title;
             ....
            Photo = x.Photos.First();
}
Run Code Online (Sandbox Code Playgroud)

但是使用这种方法将对象集合发送到viewmodel,其中返回相同的viewmodel,只返回我需要的几个属性,扼杀(至少对我来说)我实现多个实体加载和持续时间大幅度增加.

如果您需要更多信息.请问.

如果您知道更好的解决方案,请分享.

更新: 当使用域模型时,我加载了20个实体,当使用上面描述的视图模型时,会加载67个实体,这会大大降低性能.

c# nhibernate viewmodel asp.net-mvc-3 view-model-pattern

5
推荐指数
1
解决办法
143
查看次数

SelectList中的本地化枚举字符串

在我的MVC3应用程序中.我正在使用选择列表来填充具有这样的枚举值的组合框

<div class="editor-field">
   @Html.DropDownListFor(x => x.AdType, new SelectList(Enum.GetValues(typeof(MyDomain.Property.AdTypeEnum))), " ", new { @class = "dxeButtonEdit_Glass" })
</div>
Run Code Online (Sandbox Code Playgroud)

MyDomain.Property看起来像这样

 public enum AdTypeEnum 
 {
     Sale = 1,           
     Rent = 2,           
     SaleOrRent = 3 
 };
Run Code Online (Sandbox Code Playgroud)

如何使用我的本地化字符串来本地化这些枚举?

enums model asp.net-mvc-3

4
推荐指数
1
解决办法
1614
查看次数

试图测试自定义会员提供商

我想测试我的定义成员资格提供,因为它是描述在这里

在测试时我有System.TypeLoadException:

Could not load type 'Domain.WebProviders' from assembly 'System.Web, Version=4.0.0.0, Culture=neutral....,
Run Code Online (Sandbox Code Playgroud)

这是我的代码 TestBase.cs

public class TestBase
    {
        protected string _username;
        protected string _password;
        protected string _email;
        protected CustomMembershipProvider _provider;
        protected NameValueCollection _config;
        protected MembershipCreateStatus _status = new MembershipCreateStatus();

        [SetUp]
        public void initialize()
        {
            _username = "james";
            _password = "bondjamesbond";
            _email = "jamesbond@mi6.uk";

            // setup the membership provider
            _provider = new CustomMembershipProvider ();

            _config = new NameValueCollection();
            _config.Add("applicationName", "My App");
            _config.Add("name", "CustomMembershipProvider ");
            _config.Add("requiresQuestionAndAnswer", "false");
            _config.Add("connectionStringName", "ConnectionString");
            _provider.Initialize(_config["name"], _config); …
Run Code Online (Sandbox Code Playgroud)

c# tdd nunit asp.net-membership

4
推荐指数
1
解决办法
2814
查看次数

使用保留字作为实体名称

我正在使用带有命名约定的代码的NHibernate映射来映射我的实体.现在我有以下错误

SQL error - Incorrect syntax near the keyword 'User'.:
Run Code Online (Sandbox Code Playgroud)

我知道这是保留字,我想知道如何在约定的映射中使用此名称(用户)作为实体名称.

c# sql-server nhibernate

3
推荐指数
2
解决办法
1771
查看次数

将带有对象的集合发送到另一个列表

我有静态方法,它返回我,因为它的名称来自域模型的数据.

public static List<PropertyViewModel> FromDomainModel(List<Property> x)
{
   List<PropertyViewModel> dataVm = new List<PropertyViewModel>();

   foreach (Property p in x)
   {
       dataVm.Add(new PropertyViewModel(p));
   }
   return dataVm;
}
Run Code Online (Sandbox Code Playgroud)

Bellow是以上FromDomainModel调用的viewmodel ....其他属性......

public List<Photo> Photos { get; set; }
Run Code Online (Sandbox Code Playgroud)

和第一个构造函数

public PropertyViewModel(Property x)
{
    Id = x.Id;
    ...
    List<Photo> Photos = new List<Photo>();
    foreach (var item in x.Photos)
    {
       Photos.Add(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

在调试模式下,我收集照片,直到它到达FromDomainModel()方法中的行

 List<PropertyViewModel> dataVm = new List<PropertyViewModel>();
Run Code Online (Sandbox Code Playgroud)

在行dataVm.Add(new PropertyViewModel(p));p中的调试实际上保持正确的集合.问题是为什么没有在列表dataVm里面传递.

c# oop model-view-controller

2
推荐指数
1
解决办法
73
查看次数

如何在PHP和MySQL中找到任何潜在的安全问题

由于我不是Php程序员,我不得不问你,我必须挑战调查目前受到攻击的一些来源.它的一些本地新闻网站内有自定义cms.它的phg mysql在共享linux主机环境下.

admin在登录表单中输入凭据时注册,这些凭据在db中检查如下:

<?php
    session_start();
        include 'db.php';

    $connection = mysql_connect($dbHost, $dbUser, $dbPass) or die(mysql_error());
    mysql_select_db($dbName, $connection) or die(mysql_error());

        $queryString = "SELECT * FROM `Admins` WHERE `username` = '$user_name' AND password='$password'";
        $safeSelect = mysql_real_escape_string($queryString);

        $query = "SELECT * FROM `Admins`
            WHERE `username` = '$user_name' AND password='$password'";
    $result = mysql_query($query, $connection) or die('error making query');
    $affected_rows = mysql_num_rows($result);

        if($affected_rows == 1) {
        //add the user to our session variables
    $_SESSION['username'] = $user_name;
    header("Location: http://www.mysite.com/admin/index.php");
        exit;
        //print 'allowed';
        }
    else {
        print 'access …
Run Code Online (Sandbox Code Playgroud)

php mysql

-3
推荐指数
1
解决办法
477
查看次数