Tag Cloud

CRM 2011 (161) CRM 4.0 (144) C# (116) JScript (109) Plugin (92) Registry (90) Techpedia (77) PyS60 (68) WScript (43) Plugin Message (31) Exploit (27) ShellCode (26) FAQ (22) JavaScript (21) Killer Codes (21) Hax (18) VB 6.0 (17) Commands (16) VBScript (16) Quotes (15) Turbo C++ (13) WMI (13) Security (11) 1337 (10) Tutorials (10) Asp.Net (9) Safe Boot (9) Python (8) Interview Questions (6) video (6) Ajax (5) VC++ (5) WebService (5) Workflow (5) Bat (4) Dorks (4) Sql Server (4) Aptitude (3) Picklist (3) Tweak (3) WCF (3) regex (3) Config (2) LINQ (2) PHP (2) Shell (2) Silverlight (2) TSql (2) flowchart (2) serialize (2) ASHX (1) CRM 4.0 Videos (1) Debug (1) FetchXml (1) GAC (1) General (1) Generics (1) HttpWebRequest (1) InputParameters (1) Lookup (1) Offline Plug-ins (1) OutputParameters (1) Plug-in Constructor (1) Protocol (1) RIA (1) Sharepoint (1) Walkthrough (1) Web.config (1) design patterns (1) generic (1) iframe (1) secure config (1) unsecure config (1) url (1)

Pages

Thursday, November 15, 2012

Converting Milliseconds to other Intervals

As long as you can calculate the number of milliseconds in an interval, you can come up with a number by dividing the total number of milliseconds by the number of milliseconds in the desired interval. What's more, we can apply the modulus (%) operator to strip out that value to determine the next larger interval. The key is to always go from the smallest interval - milliseconds - to the largest - days:


Date.daysBetween = function( date1, date2 ) {
//Get 1 day in milliseconds
var one_day=1000*60*60*24;

// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();

// Calculate the difference in milliseconds
var difference_ms = date2_ms - date1_ms;
//take out milliseconds
difference_ms = difference_ms/1000;
var seconds = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var minutes = Math.floor(difference_ms % 60);
difference_ms = difference_ms/60;
var hours = Math.floor(difference_ms % 24);
var days = Math.floor(difference_ms/24);

return days + ' days, ' + hours + ' hours, ' + minutes + ' minutes, and ' + seconds + ' seconds';
}

//Set the two dates
var y2k = new Date(2000, 0, 1);
var Jan1st2010 = new Date(y2k.getYear() + 10, y2k.getMonth(), y2k.getDate());
var today= new Date();
//displays "Days from Wed Jan 01 0110 00:00:00 GMT-0500 (Eastern Standard Time) to Tue Dec 27 2011 12:14:02 GMT-0500 (Eastern Standard Time): 694686 days, 12 hours, 14 minutes, and 2 seconds"
console.log('Days from ' + Jan1st2010 + ' to ' + today + ': ' + Date.daysBetween(Jan1st2010, today));

Calculating the Difference between Two Known Dates

Unfortunately, calculating a date interval such as days, weeks, or months between two known dates is not as easy because you can't just add Date objects together. In order to use a Date object in any sort of calculation, we must first retrieve the Date's internal millisecond value, which is stored as a large integer. The function to do that is Date.getTime(). Once both Dates have been converted, subtracting the later one from the earlier one returns the difference in milliseconds. The desired interval can then be determined by dividing that number by the corresponding number of milliseconds. For instance, to obtain the number of days for a given number of milliseconds, we would divide by 86,400,000, the number of milliseconds in a day (1000 x 60 seconds x 60 minutes x 24 hours):
 
Date.daysBetween = function( date1, date2 ) {
//Get 1 day in milliseconds
var one_day=1000*60*60*24;

// Convert both dates to milliseconds
var date1_ms = date1.getTime();
var date2_ms = date2.getTime();

// Calculate the difference in milliseconds
var difference_ms = date2_ms - date1_ms;

// Convert back to days and return
return Math.round(difference_ms/one_day);
}

//Set the two dates
var y2k = new Date(2000, 0, 1);
var Jan1st2010 = new Date(y2k.getFullYear() + 10, y2k.getMonth(), y2k.getDate());
var today= new Date();
//displays 726
console.log( 'Days since '
+ Jan1st2010.toLocaleDateString() + ': '
+ Date.daysBetween(Jan1st2010, today));
The rounding is optional, depending on whether you want partial days or not.

jsDate: VBScript native Date functions emulated for Javascript


/*
Name: jsDate
Desc: VBScript native Date functions emulated for Javascript
Author: Rob Eberhardt, Slingshot Solutions - http://slingfive.com/
Note: see jsDate.txt for more info
*/

// constants
vbGeneralDate=0; vbLongDate=1; vbShortDate=2; vbLongTime=3; vbShortTime=4; // NamedFormat
vbUseSystemDayOfWeek=0; vbSunday=1; vbMonday=2; vbTuesday=3; vbWednesday=4; vbThursday=5; vbFriday=6; vbSaturday=7; // FirstDayOfWeek
vbUseSystem=0; vbFirstJan1=1; vbFirstFourDays=2; vbFirstFullWeek=3; // FirstWeekOfYear

// arrays (1-based)
Date.MonthNames = [null,'January','February','March','April','May','June','July','August','September','October','November','December'];
Date.WeekdayNames = [null,'Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];




Date.IsDate = function(p_Expression){
return !isNaN(new Date(p_Expression)); // <-- review further
}

Date.CDate = function(p_Date){
if(Date.IsDate(p_Date)){ return new Date(p_Date); }

var strTry = p_Date.replace(/\-/g, '/').replace(/\./g, '/').replace(/ /g, '/'); // fix separators
strTry = strTry.replace(/pm$/i, " pm").replace(/am$/i, " am"); // and meridian spacing
if(Date.IsDate(strTry)){ return new Date(strTry); }

var strTryYear = strTry + '/' + new Date().getFullYear(); // append year
if(Date.IsDate(strTryYear)){ return new Date(strTryYear); }


if(strTry.indexOf(":")){ // if appears to have time
var strTryYear2 = strTry.replace(/ /, '/' + new Date().getFullYear() + ' '); // insert year
if(Date.IsDate(strTryYear2)){ return new Date(strTryYear2); }

var strTryDate = new Date().toDateString() + ' ' + p_Date; // pre-pend current date
if(Date.IsDate(strTryDate)){ return new Date(strTryDate); }
}

return false; // double as looser IsDate
//throw("Error #13 - Type mismatch"); // or is this better?
}



Date.DateAdd = function(p_Interval, p_Number, p_Date){
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }
if(isNaN(p_Number)){ return "invalid number: '" + p_Number + "'"; }

p_Number = new Number(p_Number);
var dt = Date.CDate(p_Date);

switch(p_Interval.toLowerCase()){
case "yyyy": {
dt.setFullYear(dt.getFullYear() + p_Number);
break;
}
case "q": {
dt.setMonth(dt.getMonth() + (p_Number*3));
break;
}
case "m": {
dt.setMonth(dt.getMonth() + p_Number);
break;
}
case "y": // day of year
case "d": // day
case "w": { // weekday
dt.setDate(dt.getDate() + p_Number);
break;
}
case "ww": { // week of year
dt.setDate(dt.getDate() + (p_Number*7));
break;
}
case "h": {
dt.setHours(dt.getHours() + p_Number);
break;
}
case "n": { // minute
dt.setMinutes(dt.getMinutes() + p_Number);
break;
}
case "s": {
dt.setSeconds(dt.getSeconds() + p_Number);
break;
}
case "ms": { // JS extension
dt.setMilliseconds(dt.getMilliseconds() + p_Number);
break;
}
default: {
return "invalid interval: '" + p_Interval + "'";
}
}
return dt;
}



Date.DateDiff = function(p_Interval, p_Date1, p_Date2, p_FirstDayOfWeek){
if(!Date.CDate(p_Date1)){ return "invalid date: '" + p_Date1 + "'"; }
if(!Date.CDate(p_Date2)){ return "invalid date: '" + p_Date2 + "'"; }
p_FirstDayOfWeek = (isNaN(p_FirstDayOfWeek) || p_FirstDayOfWeek==0) ? vbSunday : parseInt(p_FirstDayOfWeek); // set default & cast

var dt1 = Date.CDate(p_Date1);
var dt2 = Date.CDate(p_Date2);

// correct DST-affected intervals ("d" & bigger)
if("h,n,s,ms".indexOf(p_Interval.toLowerCase())==-1){
if(p_Date1.toString().indexOf(":") ==-1){ dt1.setUTCHours(0,0,0,0) }; // no time, assume 12am
if(p_Date2.toString().indexOf(":") ==-1){ dt2.setUTCHours(0,0,0,0) }; // no time, assume 12am
}


// get ms between UTC dates and make into "difference" date
var iDiffMS = dt2.valueOf() - dt1.valueOf();
var dtDiff = new Date(iDiffMS);

// calc various diffs
var nYears = dt2.getUTCFullYear() - dt1.getUTCFullYear();
var nMonths = dt2.getUTCMonth() - dt1.getUTCMonth() + (nYears!=0 ? nYears*12 : 0);
var nQuarters = parseInt(nMonths / 3); //<<-- different than VBScript, which watches rollover not completion

var nMilliseconds = iDiffMS;
var nSeconds = parseInt(iDiffMS / 1000);
var nMinutes = parseInt(nSeconds / 60);
var nHours = parseInt(nMinutes / 60);
var nDays = parseInt(nHours / 24); // <-- now fixed for DST switch days
var nWeeks = parseInt(nDays / 7);


if(p_Interval.toLowerCase()=='ww'){
// set dates to 1st & last FirstDayOfWeek
var offset = Date.DatePart("w", dt1, p_FirstDayOfWeek)-1;
if(offset){ dt1.setDate(dt1.getDate() +7 -offset); }
var offset = Date.DatePart("w", dt2, p_FirstDayOfWeek)-1;
if(offset){ dt2.setDate(dt2.getDate() -offset); }
// recurse to "w" with adjusted dates
var nCalWeeks = Date.DateDiff("w", dt1, dt2) + 1;
}
// TODO: similar for 'w'?


// return difference
switch(p_Interval.toLowerCase()){
case "yyyy": return nYears;
case "q": return nQuarters;
case "m": return nMonths;
case "y": // day of year
case "d": return nDays;
case "w": return nWeeks;
case "ww":return nCalWeeks; // week of year
case "h": return nHours;
case "n": return nMinutes;
case "s": return nSeconds;
case "ms":return nMilliseconds; // not in VBScript
default : return "invalid interval: '" + p_Interval + "'";
}
}




Date.DatePart = function(p_Interval, p_Date, p_FirstDayOfWeek){
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }

var dtPart = Date.CDate(p_Date);

switch(p_Interval.toLowerCase()){
case "yyyy": return dtPart.getFullYear();
case "q": return parseInt(dtPart.getMonth() / 3) + 1;
case "m": return dtPart.getMonth() + 1;
case "y": return Date.DateDiff("y", "1/1/" + dtPart.getFullYear(), dtPart) + 1; // day of year
case "d": return dtPart.getDate();
case "w": return Date.Weekday(dtPart.getDay()+1, p_FirstDayOfWeek); // weekday
case "ww":return Date.DateDiff("ww", "1/1/" + dtPart.getFullYear(), dtPart, p_FirstDayOfWeek) + 1; // week of year
case "h": return dtPart.getHours();
case "n": return dtPart.getMinutes();
case "s": return dtPart.getSeconds();
case "ms":return dtPart.getMilliseconds(); // <-- JS extension, NOT in VBScript
default : return "invalid interval: '" + p_Interval + "'";
}
}



Date.MonthName = function(p_Month, p_Abbreviate){
if(isNaN(p_Month)){ // v0.94- compat: extract real param from passed date
if(!Date.CDate(p_Month)){ return "invalid month: '" + p_Month + "'"; }
p_Month = DatePart("m", Date.CDate(p_Month));
}

var retVal = Date.MonthNames[p_Month];
if(p_Abbreviate==true){ retVal = retVal.substring(0, 3) } // abbr to 3 chars
return retVal;
}


Date.WeekdayName = function(p_Weekday, p_Abbreviate, p_FirstDayOfWeek){
if(isNaN(p_Weekday)){ // v0.94- compat: extract real param from passed date
if(!Date.CDate(p_Weekday)){ return "invalid weekday: '" + p_Weekday + "'"; }
p_Weekday = DatePart("w", Date.CDate(p_Weekday));
}
p_FirstDayOfWeek = (isNaN(p_FirstDayOfWeek) || p_FirstDayOfWeek==0) ? vbSunday : parseInt(p_FirstDayOfWeek); // set default & cast

var nWeekdayNameIdx = ((p_FirstDayOfWeek-1 + parseInt(p_Weekday)-1 +7) % 7) + 1; // compensate nWeekdayNameIdx for p_FirstDayOfWeek
var retVal = Date.WeekdayNames[nWeekdayNameIdx];
if(p_Abbreviate==true){ retVal = retVal.substring(0, 3) } // abbr to 3 chars
return retVal;
}


// adjusts weekday for week starting on p_FirstDayOfWeek
Date.Weekday=function(p_Weekday, p_FirstDayOfWeek){
p_FirstDayOfWeek = (isNaN(p_FirstDayOfWeek) || p_FirstDayOfWeek==0) ? vbSunday : parseInt(p_FirstDayOfWeek); // set default & cast

return ((parseInt(p_Weekday) - p_FirstDayOfWeek +7) % 7) + 1;
}





Date.FormatDateTime = function(p_Date, p_NamedFormat){
if(p_Date.toUpperCase().substring(0,3) == "NOW"){ p_Date = new Date() };
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }
if(isNaN(p_NamedFormat)){ p_NamedFormat = vbGeneralDate };

var dt = Date.CDate(p_Date);

switch(parseInt(p_NamedFormat)){
case vbGeneralDate: return dt.toString();
case vbLongDate: return Format(p_Date, 'DDDD, MMMM D, YYYY');
case vbShortDate: return Format(p_Date, 'MM/DD/YYYY');
case vbLongTime: return dt.toLocaleTimeString();
case vbShortTime: return Format(p_Date, 'HH:MM:SS');
default: return "invalid NamedFormat: '" + p_NamedFormat + "'";
}
}


Date.Format = function(p_Date, p_Format, p_FirstDayOfWeek, p_firstweekofyear) {
if(!Date.CDate(p_Date)){ return "invalid date: '" + p_Date + "'"; }
if(!p_Format || p_Format==''){ return dt.toString() };

var dt = Date.CDate(p_Date);

// Zero-padding formatter
this.pad = function(p_str){
if(p_str.toString().length==1){p_str = '0' + p_str}
return p_str;
}

var ampm = dt.getHours()>=12 ? 'PM' : 'AM'
var hr = dt.getHours();
if (hr == 0){hr = 12};
if (hr > 12) {hr -= 12};
var strShortTime = hr +':'+ this.pad(dt.getMinutes()) +':'+ this.pad(dt.getSeconds()) +' '+ ampm;
var strShortDate = (dt.getMonth()+1) +'/'+ dt.getDate() +'/'+ new String( dt.getFullYear() ).substring(2,4);
var strLongDate = Date.MonthName(dt.getMonth()+1) +' '+ dt.getDate() +', '+ dt.getFullYear(); //

var retVal = p_Format;

// switch tokens whose alpha replacements could be accidentally captured
retVal = retVal.replace( new RegExp('C', 'gi'), 'CCCC' );
retVal = retVal.replace( new RegExp('mmmm', 'gi'), 'XXXX' );
retVal = retVal.replace( new RegExp('mmm', 'gi'), 'XXX' );
retVal = retVal.replace( new RegExp('dddddd', 'gi'), 'AAAAAA' );
retVal = retVal.replace( new RegExp('ddddd', 'gi'), 'AAAAA' );
retVal = retVal.replace( new RegExp('dddd', 'gi'), 'AAAA' );
retVal = retVal.replace( new RegExp('ddd', 'gi'), 'AAA' );
retVal = retVal.replace( new RegExp('timezone', 'gi'), 'ZZZZ' );
retVal = retVal.replace( new RegExp('time24', 'gi'), 'TTTT' );
retVal = retVal.replace( new RegExp('time', 'gi'), 'TTT' );

// now do simple token replacements
retVal = retVal.replace( new RegExp('yyyy', 'gi'), dt.getFullYear() );
retVal = retVal.replace( new RegExp('yy', 'gi'), new String( dt.getFullYear() ).substring(2,4) );
retVal = retVal.replace( new RegExp('y', 'gi'), Date.DatePart("y", dt) );
retVal = retVal.replace( new RegExp('q', 'gi'), Date.DatePart("q", dt) );
retVal = retVal.replace( new RegExp('mm', 'gi'), (dt.getMonth() + 1) );
retVal = retVal.replace( new RegExp('m', 'gi'), (dt.getMonth() + 1) );
retVal = retVal.replace( new RegExp('dd', 'gi'), this.pad(dt.getDate()) );
retVal = retVal.replace( new RegExp('d', 'gi'), dt.getDate() );
retVal = retVal.replace( new RegExp('hh', 'gi'), this.pad(dt.getHours()) );
retVal = retVal.replace( new RegExp('h', 'gi'), dt.getHours() );
retVal = retVal.replace( new RegExp('nn', 'gi'), this.pad(dt.getMinutes()) );
retVal = retVal.replace( new RegExp('n', 'gi'), dt.getMinutes() );
retVal = retVal.replace( new RegExp('ss', 'gi'), this.pad(dt.getSeconds()) );
retVal = retVal.replace( new RegExp('s', 'gi'), dt.getSeconds() );
retVal = retVal.replace( new RegExp('t t t t t', 'gi'), strShortTime );
retVal = retVal.replace( new RegExp('am/pm', 'g'), dt.getHours()>=12 ? 'pm' : 'am');
retVal = retVal.replace( new RegExp('AM/PM', 'g'), dt.getHours()>=12 ? 'PM' : 'AM');
retVal = retVal.replace( new RegExp('a/p', 'g'), dt.getHours()>=12 ? 'p' : 'a');
retVal = retVal.replace( new RegExp('A/P', 'g'), dt.getHours()>=12 ? 'P' : 'A');
retVal = retVal.replace( new RegExp('AMPM', 'g'), dt.getHours()>=12 ? 'pm' : 'am');
// (always proceed largest same-lettered token to smallest)

// now finish the previously set-aside tokens
retVal = retVal.replace( new RegExp('XXXX', 'gi'), Date.MonthName(dt.getMonth()+1, false) ); //
retVal = retVal.replace( new RegExp('XXX', 'gi'), Date.MonthName(dt.getMonth()+1, true ) ); //
retVal = retVal.replace( new RegExp('AAAAAA', 'gi'), strLongDate );
retVal = retVal.replace( new RegExp('AAAAA', 'gi'), strShortDate );
retVal = retVal.replace( new RegExp('AAAA', 'gi'), Date.WeekdayName(dt.getDay()+1, false, p_FirstDayOfWeek) ); //
retVal = retVal.replace( new RegExp('AAA', 'gi'), Date.WeekdayName(dt.getDay()+1, true, p_FirstDayOfWeek) ); //
retVal = retVal.replace( new RegExp('TTTT', 'gi'), dt.getHours() + ':' + this.pad(dt.getMinutes()) );
retVal = retVal.replace( new RegExp('TTT', 'gi'), hr +':'+ this.pad(dt.getMinutes()) +' '+ ampm );
retVal = retVal.replace( new RegExp('CCCC', 'gi'), strShortDate +' '+ strShortTime );

// finally timezone
tz = dt.getTimezoneOffset();
timezone = (tz<0) ? ('GMT-' + tz/60) : (tz==0) ? ('GMT') : ('GMT+' + tz/60);
retVal = retVal.replace( new RegExp('ZZZZ', 'gi'), timezone );

return retVal;
}



// ====================================

/* if desired, map new methods to direct functions
*/
IsDate = Date.IsDate;
CDate = Date.CDate;
DateAdd = Date.DateAdd;
DateDiff = Date.DateDiff;
DatePart = Date.DatePart;
MonthName = Date.MonthName;
WeekdayName = Date.WeekdayName;
Weekday = Date.Weekday;
FormatDateTime = Date.FormatDateTime;
Format = Date.Format;



/* and other capitalizations for easier porting
isDate = IsDate;
dateAdd = DateAdd;
dateDiff = DateDiff;
datePart = DatePart;
monthName = MonthName;
weekdayName = WeekdayName;
formatDateTime = FormatDateTime;
format = Format;

isdate = IsDate;
dateadd = DateAdd;
datediff = DateDiff;
datepart = DatePart;
monthname = MonthName;
weekdayname = WeekdayName;
formatdatetime = FormatDateTime;

ISDATE = IsDate;
DATEADD = DateAdd;
DATEDIFF = DateDiff;
DATEPART = DatePart;
MONTHNAME = MonthName;
WEEKDAYNAME = WeekdayName;
FORMATDATETIME = FormatDateTime;
FORMAT = Format;
*/

Update Message

Updates an instance of an entity.

  
//# The following code example shows how to use the Update message.

// Set up the CRM service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
// You can use enums.cs from the SDK\Helpers folder to get the enumeration for Active Directory authentication.
token.AuthenticationType = 0;
token.OrganizationName = "AdventureWorksCycle";

CrmService service = new CrmService();
service.Url = "http://:/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Create the account object.
account account = new account();

// Set the properties of the account object to be updated.
account.address1_line1 = "34 Market St.";
account.creditlimit = new CrmMoney();
account.creditlimit.Value = 500000;

// accountid is a key that references the ID of the account to be updated.
account.accountid = new Key();
// accountid.Value is the GUID of the record to be changed.
account.accountid.Value = new Guid("2B951FBC-1C56-4430-B23B-20A1349068F3");

// Create the target object for the request.
TargetUpdateAccount target = new TargetUpdateAccount();

// Set the properties of the target object.
target.Account = account;

// Create the request object.
UpdateRequest update = new UpdateRequest();

// Set the properties of the request object.
update.Target = target;

// Execute the request.
UpdateResponse updated = (UpdateResponse)service.Execute(update);





CanBeReferencingRequest


// ** CanBeReferencingRequest **

//Checks whether the specified entity can be the referencing entity in one-to-many

//relationship.

// REQUEST

CanBeReferencingRequest canBereferencingRequest = new CanBeReferencingRequest

{

EntityName = "referencingEntity(Referencing Entity)"

};



// RESPONSE

CanBeReferencingResponse canBeReferencingResponse =

(CanBeReferencingResponse)_service.Execute(canBereferencingRequest);



// Verify RESPONSE

if (!canBeReferencingResponse.CanBeReferencing)

{

Console.WriteLine(

"Entity {0} can't be the referencing entity in this one-to-many relationship",

"referencingEntity(Referencing Entity)");

}


Wednesday, November 14, 2012

Create a memo attribute


// ** Create a memo attribute **

MemoAttributeMetadata memoAttribute = new MemoAttributeMetadata

{

// Set base properties

SchemaName = "new_memo",

DisplayName = new Label("Sample Memo", 1033),

RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),

Description = new Label("Memo Attribute", 1033),

// Set extended properties

Format = StringFormat.TextArea,

ImeMode = ImeMode.Disabled,

MaxLength = 500

};





// Create the request.

CreateAttributeRequest createAttributeRequest = new CreateAttributeRequest

{

EntityName = "EntityLogicalName",

Attribute = memoAttribute

};



// Execute the request. Get Response

CreateAttributeResponse resp = (CreateAttributeResponse)_service.Execute(createAttributeRequest);




CanBeReferenced Entity Request


// ** CanBeReferenced Entity Request **

//Checks whether the specified entity can be the primary entity in one-to-many relationship.

// REQUEST

CanBeReferencedRequest canBeReferencedRequest = new CanBeReferencedRequest

{

EntityName = "referencedEntity(Primary Entity)" //Primary Entity Name

};



// RESPONSE

CanBeReferencedResponse canBeReferencedResponse =

(CanBeReferencedResponse)_service.Execute(canBeReferencedRequest);



// Verify RESPONSE

if (!canBeReferencedResponse.CanBeReferenced)

{

Console.WriteLine(

"Entity {0} can't be the primary entity in this one-to-many relationship",

"referencedEntity(Primary Entity)");

}