在C#中满足以下内容的最现代(最佳)方式是什么?
string encryptedString = SomeStaticClass.Encrypt(sourceString);
string decryptedString = SomeStaticClass.Decrypt(encryptedString);
Run Code Online (Sandbox Code Playgroud)
但最小的涉及盐,键,与字节[]等混乱的大惊小怪等.
谷歌搜索和混淆我发现的东西(你可以看到类似的SO Q列表,看这是一个欺骗性的问题).
我一直在学习IoC,依赖注入等,并享受这个过程.对我来说,解耦和编程接口的好处是不费吹灰之力的.
但是,我真的不喜欢将自己绑定到像Unity或Autofac或Windsor这样的特定框架 - 因为我还在学习并且尚未确定哪个最适合我的目的.
那么,我怎么能把像Unity这样的东西包裹起来,这样我以后就可以轻松换掉温莎呢?(管他呢).并且你不敢说用另一个注入第一个;)
谢谢!
R.
Ps我标记Unity,因为这是我目前的个人偏好(我只是在使用Entlib).
c# enterprise-library dependency-injection inversion-of-control unity-container
如果我有.tt模板,我可以使用entity.Name来写出实体的名称,例如:
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{;
WriteLine(entity.Name);
}
Run Code Online (Sandbox Code Playgroud)
使用正常转换或T4,如何写出实体集的实际名称?(例如,对于Person,它可能是人物 - 但也许我将其更改为设计师中的People,所以我想要那样做).
谢谢!
理查德
让我说,我已经得出结论(经过大量试验),使用实体框架时,存储库和工作单元是错误的,错误的,错误的,这就说明了为什么这么好.
但我真的很讨厌这些嵌入式查询.问题是,如果我是如此反对存储库等,我可以在哪里放置它们?(只有请干净的答案,非常感谢的例子).
我刚刚完成了两个包含我的存储库,工作单元和数百个文件接口的项目,因为回报无处可见.我认为很多人,包括我自己,只是跳上了Repository的潮流,因为这是其他所有人都在做的事情,但回想起来,我认为这真是一个无处可去的地方.
/叹
理查德
我有一个实体具有二进制数据类型和varbinary(max)SQL Server中的相应列.EF创建了这个:
CREATE TABLE [dbo].[Attachments]
(
[Id] INT IDENTITY(1,1) NOT NULL,
[FileName] NVARCHAR(255) NOT NULL,
[Attachment] VARBINARY(MAX) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
当我尝试.SaveChanges()从Entity Framework 调用时,出现错误:
无法创建大小为8061的行,该行大于允许的最大行大小8060
我理解错误,谷歌有很多,但我不明白为什么我得到它.这不应该由Entity Framework/SQL Server管理吗?
理查德
我有一个使用接口的部分类,因为我无法继承原始抽象类,因为其他部分类是从Entity Framework 4自动生成的,因此已经继承了ObjectContext.
我的部分课程有以下内容:
namespace Model
{
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
using Utilities.BusinessRules;
using Utilities.BusinessRules.Rules;
[HasSelfValidation]
public partial class MyObject : IBusinessObject
{
private readonly IBusinessObject businessObject = new BusinessObject();
private IBusinessObject BusinessObject
{
get
{
return businessObject;
}
}
public Comment()
{
AddRule(new ValidateRequired("Title"));
}
public void AddRule(BusinessRule rule)
{
BusinessObject.AddRule(rule);
}
[SelfValidation]
public void Validate(ValidationResults results)
{
BusinessObject.Validate(results);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是界面:
namespace Utilities.BusinessRules
{
using Microsoft.Practices.EnterpriseLibrary.Validation;
public interface IBusinessObject
{
void AddRule(BusinessRule rule);
void Validate(ValidationResults results);
} …Run Code Online (Sandbox Code Playgroud) 我有这样的事情:
public override int SaveChanges()
{
foreach (var changeLog in this.ChangeTracker.Entries()
.Where(p => p.State == EntityState.Added ||
p.State == EntityState.Deleted ||
p.State == EntityState.Modified)
.SelectMany(entity => AuditRecords(entity)))
{
this.ChangeLogs.Add(changeLog);
}
return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
但是,当然,当添加EntityState时(直到SaveChanges之后),审计的更改日志将不包含实体的主键值.如何获取更改审核目的的主键值?
理查德
.net entity-framework entity-framework-4 ef-code-first dbcontext
我有一种情况,我可能正在使用多个DbContexts,可能包含或不包含SomeEntity的DbSet.
当然,如果我触发SaveChanges并且此实体不存在,将发生以下错误:
实体类型SomeEntity不是当前上下文的模型的一部分.
我如何检查模型中是否存在实体或实体集,如果不存在,则将有问题的代码短路?
理查德
我的Web应用程序中的App_GlobalResources中有一个resx文件,调用时带:
Resources.GetResource("ResourceFileName", "Resource")
Run Code Online (Sandbox Code Playgroud)
辅助方法存在于单独的类库中以获取资源值:
using System.Resources;
using System.Web;
public static class Resources
{
public static string GetResource(string resource, string key)
{
try
{
string resourceValue = (string)HttpContext.GetGlobalResourceObject(resource, key);
return string.IsNullOrEmpty(resourceValue) ? string.Empty : resourceValue;
}
catch (MissingManifestResourceException)
{
return string.Empty;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我点击F5,一切正常.如果我部署到Web服务器,则对GetGlobalResourceObject的所有调用都将返回null.
资源存在.我怎么把它们拿出来?
谢谢,
理查德
使用WebApi,在MVC客户端中使用服务的最佳方式是什么?
如果回复如下:
<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfContact
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Contact>
<Id>1</Id>
<Name>Bilbo Baggins</Name>
</Contact>
<Contact>
<Id>2</Id>
<Name>Frodo Baggins</Name>
</Contact>
</ArrayOfContact>
Run Code Online (Sandbox Code Playgroud)
如何使用@Model将我的联系人输出并在MVC3 Razor View中列出?
WebApi的最新预览在网上有很多例子,但我找不到任何更进一步的例子,并且显示客户正在使用该服务,比如说使用WebClient.
谢谢,
R.
在这个例子中:
try
{
this.myEnum = (MyEnum)Enum.Parse(typeof(MyEnum), queryStringKeyValue);
}
catch (Exception)
{
this.myEnum = null;
}
Run Code Online (Sandbox Code Playgroud)
如何避免引入依赖于捕获泛型异常?我从ReSharper那里得不到任何线索.理想情况下,我想摆脱try/catch.
c# ×5
.net ×2
dbcontext ×2
asp.net ×1
css ×1
encryption ×1
inheritance ×1
razor ×1
sql-server ×1
t4 ×1
unit-of-work ×1
wcf-web-api ×1