"必须使用关系流畅的API或数据注释显式配置此关联的主要结尾."
我在更新/迁移数据库时在实体框架4.4中收到此错误,但我不是要尝试指定1:1关系.我想要这样的东西:
public class EntityA
{
public int ID { get; set; }
public int EntityBID { get; set; }
[ForeignKey("EntityBID")]
public virtual EntityB EntityB { get; set; }
}
public class EntityB
{
public int ID { get; set; }
public Nullable<int> PreferredEntityAID { get; set; }
[ForeignKey("PreferredEntityAID")]
public virtual EntityA PreferredEntityA { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
其中EntityA必须具有EntityB父级,而EntityB可以具有首选的EntityA子级,但不必具有.首选子项应该是与父项关联的子项之一,但我不知道如何在数据库中强制执行此操作.我打算以编程方式强制执行它.
如何解决此错误或实现这些关系的更好方法是什么?
我充满了懊恼不得不问这个,但我无法弄清楚如何在GitLab中添加用户.我进入屏幕,它允许我添加新成员,如下所示:
从我的组页面 - >单击左侧工具栏上的"成员"图标 - >单击"添加成员"展开按钮 - >在"按名称查找现有成员"或"人员"字段中输入用户名,但不会得到任何结果.
"人物"字段自动填充了一堆我不认识的名字.但是不会让我找到通过用户名或实际名称注册的用户.我错过了什么吗?
我需要在加载之前解决我的应用程序中的一些依赖项(为我的服务提取数据等).我想把它们分开,这样我就可以为主应用程序配置一个配置块,然后为应用程序的其他部分配置一个或多个配置块.
最后,我希望让它解决主应用程序的依赖关系,加载与之关联的组件,然后解决其余部分并加载这些部分,因此加载时响应更快一些.
这是我到目前为止所提出的,但它没有解决第一个配置块中的依赖项:
angular.module('myApp', ['ui.router', 'kendo.directives'])
.config(function($stateProvider) {
$stateProvider
.state('settings', {
url: '/',
views: {
'mainNav': {
templateUrl: 'scripts/directives/mainNav/mainNav.html',
controller: 'mainNavCtrl'
//etc
}
},
resolve: {
fetchSettings: function(Settings) {
return Settings.fetch;
}
}
});
})
.config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('otherPart', {
url: '',
views: {
'otherPart': {
templateUrl: 'views/otherPart.html'
//etc
}
},
resolve: {
fetcherPromise: function(User, MyData) {
var fns = [
MyData.fetch,
User.fetchEntitlements
];
return fetcher.inSerial(fns);
}
}
})
;
});
Run Code Online (Sandbox Code Playgroud)
我是否走在正确的轨道上?
如果我只需要实例化一个类来调用它上面的单个方法然后完成它,我喜欢在一行中这样做,
string result = new MyClass().GetResult();
Run Code Online (Sandbox Code Playgroud)
而不是做类似的事情,
var myClass = new MyClass();
string result = myClass.GetResult();
Run Code Online (Sandbox Code Playgroud)
我的理解是,在内存分配和后续清理方面,幕后工作也是如此.这是真的如此,还是有区别?如果是这样,一个比另一个更有效吗?
编辑:
像许多人建议的那样使方法静态是一个很好的解决方案.我正在与其他人创建的课程一起工作,目前我无法重构或更改.那么对于这种情况,实例化内联还是单独一行是否有任何区别?
编辑:
这个问题的答案是否会根据班级维护的资源数量而有所不同(来自Blam&BenCr的评论)?
我开始做以下事情:
using (TextWriter textWriter = new StreamWriter(filePath, append))
{
foreach (MyClassA myClassA in myClassAs)
{
textWriter.WriteLine(myIO.GetCharArray(myClassA));
if (myClassA.MyClassBs != null)
myClassA.MyClassBs.ToList()
.ForEach(myClassB =>
textWriter.WriteLine(myIO.GetCharArray((myClassB)));
if (myClassA.MyClassCs != null)
myClassA.MyClassCs.ToList()
.ForEach(myClassC =>
textWriter.WriteLine(myIO.GetCharArray(myClassC)));
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎很慢(35,000行约35秒).
然后我尝试按照这里的示例创建一个缓冲区,使用以下代码,但它没有获得任何东西.我仍然看到大约35秒的时间.我是如何实现缓冲区的?
using (TextWriter textWriter = new StreamWriter(filePath, append))
{
char[] newLineChars = Environment.NewLine.ToCharArray();
//Chunk through 10 lines at a time.
int bufferSize = 500 * (RECORD_SIZE + newLineChars.Count());
char[] buffer = new char[bufferSize];
int recordLineSize = RECORD_SIZE + newLineChars.Count();
int bufferIndex = 0; …Run Code Online (Sandbox Code Playgroud) 当我得到警告时:
“警告:清理HTML会剥离一些内容”
我进行了一些研究,发现人们使用下面的管道或看起来像下面的管道
import { Pipe, PipeTransform } from "@angular/core";
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
@Pipe({
name: 'sanitizeHtml'
})
export class SanitizeHtmlPipe implements PipeTransform {
constructor(private _sanitizer:DomSanitizer) { }
transform(v:string):SafeHtml {
return this._sanitizer.bypassSecurityTrustHtml(v);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使我实现这样的管道,我仍然会遇到相同的错误:
<span [innerHTML]="specialist.blocks[0].paragraph.html | sanitizeHtml"></span>
<p [innerHTML]="package.fields.remarks | sanitizeHtml"></p>
<li [innerHTML]="package.fields.name | sanitizeHtml"></li>
Run Code Online (Sandbox Code Playgroud)
所以我想知道我是错误地实现了管道还是还有其他原因导致管道不起作用?
编辑:
的示例specialist.blocks[0].paragraph.html:
“ <div id =” test“ class =” test“> \ n <h3> NAME专家名单</ h3> \ n <p>随机文本</ p> </ div> \ n </ div>”
的示例package.fields.remarks …
是的,我是那个白痴.但我确实只在Pending Changes面板中选择了我要撤消的文件.它打开了一个新的对话框,我错误地假设它只包含我在主面板中做出的选择.我说要撤消一切和presto!一堆我不想撤消的东西被撤消了(很像毛衣歌.我是一个工具).所以我的问题是:无论如何要恢复我解除的工作?
我想使用DbContext而不是ObjectContext.我更新了EF,所以现在我有了DbContext,但是我想基于DbContext而不是ObjectContext生成强类型的上下文.当我添加新的ADO.NET实体数据模型时,它仍然基于ObjectContext.是否不可能在Visual Studio 2010中使用EF 4.1使其基于DbContext?
更新:
好的,我按照此链接中的说明进行操作,并能够生成DbContext模板对象.但是,现在它说模板实体和.edmx文件中的实体之间存在歧义.我该如何解决这个问题?我是否会吹掉.edmx文件中的那些?
我尝试使用Quartz 2.1.2进行日志记录,但在调试时不断收到以下输出:
未找到配置部分 - 抑制日志输出
这是我的App.config文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE"/>
<arg key="configFile" value="c:\Scheduler.log"/>
<arg key="level" value="INFO" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %l - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="EventLogAppender" />
</root>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这是实例化我的调度程序的代码:
private IScheduler scheduler;
public JobScheduler()
{ …Run Code Online (Sandbox Code Playgroud) 在foreach循环声明中直接声明LINQ是不好的做法吗?在性能或细微的行为差异方面。
例如:
foreach (string name in persons.Select(x => x.name))
{
//Do something with name
}
Run Code Online (Sandbox Code Playgroud) 我有一个WCF数据契约与一堆原始类型的属性,如int和decimal,DateTime(当然,这是一个结构).
我的同事建议将它们全部为可空,然后通过检查null来验证服务端的必需值.我相信部分原因是因为它是一个可序列化的对象,所以你不能用数据契约上的构造函数强制执行所需的值 - 它避免了测试默认值的麻烦.
但是,我还希望在合同中隐含必需的属性,以便客户可以了解所需的属性.
所以不要做类似的事情,
[DataMember]
public Nullable<int> AgencyID { get; set; }
Run Code Online (Sandbox Code Playgroud)
这将允许我在服务端干净地测试null,我这样做:
[DataMember(IsRequired = true, EmitDefaultValue = true)]
public int AgencyID { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果没有为属性分配值或者默认值为0,这将抛出异常 - 这是所需的行为.这是在客户端执行所需属性的最佳实践吗?让一切都可以为空并在服务端检查它有什么好处吗?
我有以下代码来为数据绑定创建一个可观察的属性。它正在开发中,所以我不确定最终的实现会是什么,而且我对 Swift 还是很陌生。
class Observable<T> {
typealias Observer = T -> Void
var value: T {
didSet {
for observer in self.observers {
observer?(self.value)
}
}
}
var observers: [Observer?] = []
init(_ val: T) {
self.value = val
}
}
Run Code Online (Sandbox Code Playgroud)
我想保留对 Observer 闭包的弱引用。我不想依赖客户端来确保闭包在通过捕获列表传入之前是弱的/无主的。特别是因为在给定的类上可以有许多可观察的属性。
是否可以在我的 Observable 类中使闭包引用变弱?
更新:
我找到了一些我认为可以帮助我完成我想要的资源的资源:
具体来说,
func methodPointer<T: AnyObject>(obj: T, method: (T) -> () -> Void) -> (() -> Void) {
return { [unowned obj] in method(obj)() }
}
Run Code Online (Sandbox Code Playgroud)
以下链接参考了上面的 stackoverflow 答案并更详细地介绍了:
http://blog.xebia.com/2014/10/09/function-references-in-swift-and-retain-cycles/ …
我来自.NET世界,所以我对Swift中如何实现泛型有点困惑.我正在尝试执行以下操作:
func request<T: Model>(resultHandler: (model: T?) -> ()) {
var model: T? = nil
NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: self.url)!) {
data, response, error in
if let json = NSString(data: data, encoding: NSUTF8StringEncoding) {
model = T(json: json)
resultHandler(model: model)
}
}.resume()
}
Run Code Online (Sandbox Code Playgroud)
并按如下方式使用它:
var store: HttpStore = HttpStore(url: ...)
store.request {
model in
println("Task name: \(model.name!)")
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
'T?' 没有名为'name'的成员
我明白了.我没有在我的调用代码中的任何地方解析T到特定类型.在.NET中我会做类似store.request <Task>()...但我不能在Swift中这样做.
有没有办法完成我在这里要做的事情?
.net ×4
c# ×2
closures ×2
swift ×2
angular ×1
angular5 ×1
angularjs ×1
associations ×1
config ×1
datacontract ×1
dbcontext ×1
foreach ×1
generics ×1
gitlab ×1
isrequired ×1
linq ×1
log4net ×1
non-nullable ×1
quartz.net ×1
textwriter ×1
tfs ×1
wcf ×1